List

Mia Lee·2022년 2월 9일
0

JAVA

목록 보기
96/98
package ex_list;

import java.util.*;

public class Ex1 {

	public static void main(String[] args) {

		/*
		 * 컬렉션 프레임워크
		 * 2. List 계열
		 * 
		 */
		
		List list = new ArrayList(); // ArrayList -> List 업캐스팅 가능
		
		list.add("ONE");
		list.add(2);
		list.add(3.14);
		
		System.out.println("list 객체가 비어있는가? " + list.isEmpty());
		System.out.println("list 객체에 저장된 요소의 갯수는? " + list.size());
		System.out.println("list 객체에 모든 요소 출력 : " + list); // toString() 생략
		
		// list 객체의 중복 허용
		System.out.println("중복 데이터 3.14 추가 가능한가? " + list.add(3.14));
		
		System.out.println("list 객체가 비어있는가? " + list.isEmpty());
		System.out.println("list 객체에 저장된 요소의 갯수는? " + list.size());
		System.out.println("list 객체에 모든 요소 출력 : " + list); // toString() 생략
		
		// add(int index, Object e) : 해당 인덱스에 데이터 삽입(끼워넣기)
		list.add(2, 3); // 기존 2번 인덱스의 데이터를 밀어내고 정수 3을 2번 인덱스에 삽입
		System.out.println("list 객체에 모든 요소 출력 : " + list); // toString() 생략
		
		// Object get(int index) : 특정 인덱스의 요소 리턴
		System.out.println("3번 인덱스 요소 : " + list.get(3));
		// 만약, 존재하지 않는 인덱스 번호를 지정할 경우 -> 예외 발생!
//		System.out.println("5번 인덱스 요소 : " + list.get(5)); // 오류 발생!
		
		// List 객체의 모든 요소 꺼내기
		// 1. 향상된 for문 사용(Set 계열 반복 방법과 동일함)
//		for (Object o : list) {
//			System.out.println(o);
//		}
		
		// 2. 일반 for문을 사용하여 List 객체의 get() 메서드로 인덱스를 통해 접근
		// => 특정 인덱스 범위 반복이 가능하다는 장정이 있음(배열 접근 방법과 동일함)
		// => 0번 인덱스부터 list 크기(갯수)까지 반복
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		
		System.out.println("================================================");
		
		// Object remove(int index) : index에 해당하는 요소 제거(제거되는 요소 리턴됨)
		// boolean remove(Object o) : o에 해당하는 객체 제거(제거될 경우 true 리턴됨)
//		System.out.println("인덱스를 사용하여 정수 2(인덱스1) 삭제 : " + list.remove(1));
		
//		System.out.println("정수 2를 지정하여 해당 요소 직접 삭제 : " + list.remove(2));
		// => 정수 2를 지정하는 것이 아닌 2번 인덱스 지정으로 취급됨
		//    따라서, 정수 2를 지정하여 삭제해야하는 경우 Object 타입으로 형변환 필요!
		System.out.println("정수 2를 지정하여 해당 요소 직접 삭제 : " + list.remove((Object) 2));
		System.out.println("list 객체에 모든 요소 출력 : " + list);
		
		// Object set(int index, Object o) : 지정된 인덱스의 데이터를 교체(덮어쓰기)
		// => 덮어쓰기 위해 제거되는 요소가 리턴됨(존재하지 않는 인덱스 지정 시 오류 발생!)
		System.out.println("3번 인덱스 요소를 문자 '4'로 교체 : " + list.set(3, '4'));
		System.out.println("list 객체에 모든 요소 출력 : " + list);
		
		// List subList(int fromIndex, int toIndex) : 부분 리스트 추출
		// => 시작인덱스(fromIndex)부터 끝인덱스(toIndex) -1 까지 추출됨
		List subList = list.subList(1, 3);
		System.out.println("1번 인덱스부터 3번 인덱스보다 작은 부분 리스트 추출 : " + subList);
		
		// Object[] toArray() : List 객체의 모든 요소를 Object[] 배열로 리턴
		Object[] arr = list.toArray();
		for (Object o : arr) {
			System.out.println(o);
		}
		
		list.add(3);
		
		System.out.println("list 객체에 모든 요소 출력 : " + list);
		
		// int indexOf(Object o) : 요소 o의 인덱스 리턴(첫 인덱스부터 탐색)
		System.out.println("3라는 요소의 인덱스 번호 : " + list.indexOf(3));
		// int lastIndexOf(Object o) : 요소 o의 인덱스 리턴(끝 인덱스부터 탐색)
		System.out.println("3라는 요소의 인덱스 번호 : " + list.lastIndexOf(3));
		
		// 존재하지 않는 요소를 지정할 경우 : 인덱스 번호 -1 리턴(데이터 없음)
		System.out.println("10이라는 요소의 인덱스 번호 : " + list.indexOf(10));
		
		// boolean contains(Object o) : 요소 o 존재 여부 리턴
		System.out.println("실수 3.14가 존재하는가? " + list.contains(3.14));
		System.out.println("실수 3.1이 존재하는가? " + list.contains(3.1));
		
		// Arrays 클래스의 asList() 메서드를 호출하여 데이터를 연속적으로 전달하면 
		// 해당 데이터들을 List 타입 객체로 변환!
		List arrayList = Arrays.asList(1, 2, 3, 4, 5, 6);
		System.out.println(arrayList);
		
		// 주의! 기본 데이터타입 배열 자체를 asList() 메서드 파라미터로 전달하면
		// 정상적인 변환 불가능(asList() 메서드 파라미터로 클래스타입(Wrapper) 배열로 전달!)
		// => 오류는 바라생하지 않으나 배열 데이터를 정상적으로 전달 불가능
//		int[] iArr = {1, 2, 3, 4, 5, 6};
//		List arrayList2 = Arrays.asList(iArr);
//		System.out.println(arrayList2);
		
		// => int 타입 대신 크르래스타입인 Integer 사용!
		Integer[] iArr = {1, 2, 3, 4, 5, 6}; // 오토박싱
		List arrayList2 = Arrays.asList(iArr);
		System.out.println(arrayList2);
		
		// String 타입은 클래스타입이므로 사용 가능!
		String[] strArr = {"1", "2", "3"};
		List arrayList3 = Arrays.asList(strArr);
		System.out.println(arrayList3);
		
		// ArrayList(list3) 객체 생성하고, 정수(3, 4, 1, 6, 5, 2) 추가
		List list3 = Arrays.asList(3, 4, 1, 6, 5, 2);
		
		System.out.println("정렬 전 : " + list3);
		
		// Collections 클래스의 static 메서드 sort() 사용 시 List 객체 정렬 가능
		// void sort(List list) : 해당 List 객체의 요소를 정렬(오름차순)
		Collections.sort(list3);
		System.out.println("정렬 후 : " + list3);
		
		// Collections 클래스의 static 메서드 shuffle() 사용 시 List 객체 뒤섞기 가능
		// void shuffle(List list) : 해당 List 객체의 요소를 랜덤하게 섞기
		Collections.shuffle(list3);
		System.out.println("셔플 후 : " + list3);
		
	}

}







0개의 댓글