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));