Java/java

3주차 - ArrayList (1)

우젼 2022. 9. 2. 19:04

List컬렉션은 값을 넣어줄때마다 최대값이 갱신된다는 장점이 있다.

하지만 배열은 생성하며 선언한 크기를 벗어날 수 없다.

상황에 따라서 자신에게 필요한 것을 사용하자.

 

ArrayList의 선언, 값저장, 출력

		ArrayList list = new ArrayList();
		ArrayList<Integer> list1 = new ArrayList<Integer>(); // Integer 형만 저장하는 리스트로써 사용하겠다는 선언
		ArrayList<Integer> list2 = new ArrayList(); //뒤의 <>는 생략가능
        	
        list.add(123);
		list.add(12.3);
		list.add("String");

		System.out.println("get(0) : " + list.get(0));
		System.out.println("get(1) : " + list.get(1));
		System.out.println("get(2) : " + list.get(2));
//		System.out.println("get(3) : " + list.get(3)); // 없는 index일경우엔 예외발생

 

ArrayList의 특징

		ArrayList list = new ArrayList(); // 무슨 자료형인지 지정되지 않은 상태
		// <자료형>을 지정하지 않고 저장시 입력된 데이터의 자료형은 Object
		// Object : 최상위 클래스이기 때문에 모든 자료형을 다 수용할 수 있다.
		Object obj1 = 123;
		Object obj2 = 12.3;
		Object obj3 = "STRING";

		list.add(123);
		list.add(12.3);
		list.add("String");

//		Integer data = list.get(0); // 저장하기 위해선 아래처럼 형변환이 필요하다
		Integer data = (Integer) list.get(0);
		Double data2 = (Double) list.get(1);
		String data3 = (String) list.get(2);

//		for(Integer i : list) { 
//			System.out.println(i); // 저장된 데이터의 자료형이 Integer이 아니기 때문에 출력이 되지 않는다.
//		}

		for (Object o : list) {
			System.out.println(o);
		}
		// Object는 최상위 클래스이기 때문에 자료형과 상관없이 모두 출력 가능하다
        
        /*
		 * <> : Generic, 제너릭
		 * <>안에는 Wrapper Class를 입력할 수 있다.
		 * 
		 * Wrapper Class의 종류
		 * 
		 * Integer
		 * Double
		 * 
		 * Boolean
		 * Byte
		 * Character
		 * Short
		 * Float
		 * Long
		 * 
		 * 더 있지만 주로 사용하는것들은 위의 것들이다.
		 */

.contains() : 괄호 안의 값이 리스트안에 있는지 여부를 확인한다 반환값은 boolean

아래는 그 예시

		Scanner input = new Scanner(System.in);	
		ArrayList<String> list = new ArrayList<>();
		
		list.add("박명수");
		list.add("유재석");
		list.add("정형돈");
		list.add("노홍철");
		list.add("길");
		
		System.out.println("현재 입력된 데이터의 수 : " + list.size());
		System.out.println("담겨 있는 모든 데이터 : " + list);
		System.out.print("데이터 확인 : ");
		String tmp = input.nextLine();
		
		if(!list.contains(tmp)) {
			System.out.println(tmp + "는 존재합니다");
		} else {
			System.out.println(tmp + "는 없습니다");
		}

.indexOf() : 괄호안의 값이 위치하고 있는 인덱스 값을 반환

.lastIndexOf() : 괄호 안의 값이 마지막으로 위치하고 있는 인덱스 값을 반환

아래는 indexOf()의 사용 예시와 값을 삭제했을때 인덱스의 값의 변화 확인

		Scanner input = new Scanner(System.in);
		ArrayList<String> list = new ArrayList<>();

		list.add("123");
		list.add("456");
		list.add("123");

		System.out.println(list.indexOf("123")); // 첫번째 "123"이 위치한 값 출력
		System.out.println(list.indexOf("456"));
		System.out.println(list.indexOf("12"));
		System.out.println(list.lastIndexOf("123")); // 마지막 "123"이 위치한 값 출력
        
       	ArrayList<String> arr = new ArrayList<>();

		arr.add("123");
		arr.add("456");
		arr.add("789");

		System.out.println("지우기 전 [0] : " + arr.get(0));
		System.out.println("지우기 전 [1] : " + arr.get(1));
		System.out.println("결과값 : " + arr.remove("123")); // 입력된 데이터를 이용해서 삭제
		System.out.println("지우기 후 [0] : " + arr.get(0));
		System.out.println("결과값 : " + arr.remove(0)); // 인덱스 번호를 이용해서 삭제
		System.out.println("지우기 전 [0] : " + arr.get(0));