프로그래밍/JAVA 자바

List 인터페이스

Heidong 2021. 7. 30. 02:27
반응형


 *  List 인터페이스
 *  = 순서가 있다.
 *  = 배열과 유사한 구조
 *  = 가변 길이(저장 공간이 부족하면 자동으로 공간이 늘어남)
 *  = 중복적인 요소도 추가 가능
 *  = 중간에 데이터를 추가하거나 삭제도 가능
 *  = 주요 구현 클래스 - ArrayList, Vector, LinkedList, Stack 등
 *  = 동기화 지원 : Vector - 다중 스레드 환경에서 안전
 *  = 동기화 지원 X : ArrayList, LinkedList = 다중 스레드 환경에서 안전하지 않음(속도는 빠름)

package ex0729;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*
 * List 인터페이스
 *  = 순서가 있다.
 *  = 배열과 유사한 구조
 *  = 가변 길이(저장 공간이 부족하면 자동으로 공간이 늘어남)
 *  = 중복적인 요소도 추가 가능
 *  = 중간에 데이터를 추가하거나 삭제도 가능
 *  = 주요 구현 클래스 - ArrayList, Vector, LinkedList, Stack 등
 *  = 동기화 지원 : Vector - 다중 스레드 환경에서 안전
 *  = 동기화 지원 X : ArrayList, LinkedList = 다중 스레드 환경에서 안전하지 않음(속도는 빠름)
 */

public class Ex001_List {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		List<String> list = new ArrayList<String>(); // 업캐스팅
		
		String s;
		
		// 마지막에 요소 추가
		list.add("서울");
		list.add("부산");
		list.add("인천");
		list.add("광주");
		list.add("대전");
		list.add("서울");
		
		System.out.println(list.indexOf("서울"));
		
		// 인덱스 2에 데이터 새로 추가
		list.add(2, "대구");
		System.out.println(list);
		
		// 데이터 개수 구하는 법
		System.out.println("개수 :" + list.size());
		
		// 처음 데이터 index0
		s = list.get(0);
		System.out.println(s);
		
		// 마지막 데이터
		s = list.get(list.size()-1); //사이즈에서 1빼주기
		System.out.println(s);
		
		list.add(0, "한국");
		System.out.println(list);
		
		//데이터를 수정 해보자
		list.set(0, "대한민국");
		System.out.println(list);
		
		// 인천은 몇번째 인덱스에 있나?
		System.out.println(list.indexOf("인천"));
		System.out.println(list.indexOf("세종")); // 값이 없으면 -1을 반환
		
		// 인덱스 존재 여부 확인
		System.out.println(list.contains("부산")); // 존재하면 true 반환
		
		// 인덱스 삭제 (인덱스 입력하거나 값을 직접 입력)
		list.remove("대한민국");
		list.remove(0);
		System.out.println(list);
		
		//전체 출력 방법1
		System.out.println("전체 출력 - 1");
		for(int i=0; i<list.size(); i++) {
			System.out.print(list.get(i)+"    ");
		}
		System.out.println();
		
		//전체 출력 방법2
		System.out.println("전체 출력 - 2");
		for(String str : list) {
			System.out.print(str + "    ");
		}
		System.out.println();
		
		//전체 출력 방법3 (반복자)
		System.out.println("전체 출력 - 3");
		Iterator<String> it = list.iterator();
		while(it.hasNext()) {
			String str = it.next();
			System.out.print(str + "    ");
		}
		System.out.println();
		
		//전체 출력 역순으로 방법1
		System.out.println("역순으로 출력 -1");
		for(int i=list.size()-1; i>=0; i--) {
			System.out.print(list.get(i) + "    ");
		}
		System.out.println();

		//전체 출력 역순으로 방법2
		System.out.println("역순으로 출력 -2");
		// ListIterator = 정방향 역방향 둘다 가능
		ListIterator<String> it2 = list.listIterator(list.size());
		while(it2.hasPrevious()) {
			String str = it2.previous();
			System.out.print(str + "    ");
		}
		System.out.println();
		
		// 전부 삭제
		list.clear();
		System.out.println(list.size()); //개수가 0개가 나옴
	}

}

 

리스트 -> 배열

배열 -> 리스트

package ex0729;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Ex002_List {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		List<String> list1 = new ArrayList<String>();
		list1.add("서울");
		list1.add("부산");
		list1.add("대구");
		
		List<String> list2 = new ArrayList<String>();
		list2.add("강원");
		list2.add("경기");
		list2.add("경상");
		
		// list2에 list1의 '모든' 데이터를 추가
		list2.addAll(list1);
		System.out.println(list2);
		
		// List<String> => String[]
		String [] ss = list2.toArray(new String[list2.size()]);
		System.out.println("리스트를 배열로 복사");
		for(String s : ss) {
			System.out.print(s + " ");
		}
		System.out.println();
		
		// String[] => List<String>
		List<String> list3 = Arrays.asList(ss);
		System.out.println("배열을 리스트로 복사 : " + list3);
		
		// subList(a, b) = a 인덱스에서 b-1 인덱스까지의 부분을 List로
		List <String> list4 = list3.subList(1, 4);
		System.out.println(list4);
		
		//전체 삭제
		list1.clear();
		System.out.println(list1.size());
		
		// list2의 데이터중에서 경상, 서울 부산 삭제
		System.out.println("삭제 전 : " + list2);
		
		list2.subList(2, 5).clear(); // 일정 범위 삭제
		System.out.println("삭제 후 : " + list2);
		
		
		
		
	}

}
반응형