Web Developer/JAVA II
8. List 예제
sayitditto
2023. 1. 22. 13:02
I. 리스트 초기화, 추가/수정/삭제
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Ex01 {
public static void main(String[] args) {
// 배열 (Array)
// 1. 크기를 미리 알고 있어야 한다. 크기가 고정되어 있다.
// 2. 중간에 있는 값을 빼내면 비어있는 채로 유지된다.
// 3. index기반으로 접근 가능하다.
// 4. 기본 자료형 (Primitive type), 참조 자료형 (Reference type) 모두 저장가능
// List
// 1. 크기가 고정되어 있지 않고 동적으로 할당된다.
// 2. 중간에 있는 값을 빼내면 앞으로 당겨진다. = 메모리 낭비가 없다.
// 3. 여러방법으로 데이터를 다룰 수 있다. = 메소드가 많다.
// 4. 참조 자료형 (클래스) (Reference type) 만 가능함.
// 5. 타입 안정성을 보장하는 generic 문법을 쓸 수 있다.
// list interface 실제 구현체인 array list 실현
List<Integer> list1 = new ArrayList<>();
list1.add(5);
list1.add(3);
boolean isSuccess = list1.add(8);
System.out.println(isSuccess);
System.out.println("list1 : " + list1);
System.out.println("list1 toString : " + list1.toString());
// linked list 실현
List<Integer> list2 = new LinkedList<>();
list2.add(10);
list2.addAll(list1);
System.out.println("list 2 : " + list2);
// 요소 수정하기
System.out.println(list2.set(0, 100)); // 변경할 위치 , 변경할 값 (리턴된 값은 삭제된 값)
System.out.println("list2 : " + list2);
// 요소 삭제하기
Integer deleted = list2.remove(1); // index 1 위치의 값 제거
Integer value = 100;
list2.remove(value);
System.out.println("deleted: " + deleted);
System.out.println("list 2 : " + list2);
List<String> strList1 = new ArrayList<>();
strList1.add("abc");
strList1.add("qwer");
System.out.println(strList1.remove("abc"));
System.out.println(strList1);
// 모든 요소 삭제하기
list2.clear();
System.out.println("list2: " + list2);
}
}
II. 반복문으로 리스트 접근하기
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Ex02 {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("grape");
// 1. 일반 for 문 (index 기반)
// for (int i = 0; i < fruits.size(); i++) {
// System.out.println(fruits.get(i));
//
// // 만약 b로 시작하면 제거
// if (fruits.get(i).startsWith("b")) {
// fruits.remove(i);
// i--; // 삭제가 될 때 한번 더 돌리기 위해
// }
// }
// System.out.println(fruits);
// 2. Iterator 사용하기
// Iterator<String> iter = fruits.iterator();
// while (iter.hasNext()) {
// String fruit = iter.next(); // next() 를 호출할 때마다 소비가 되므로 반복문에서 한번만 수행한다.
// System.out.println(fruit);
//
// // b로 시작하면 제거
// if (fruit.startsWith("b")) {
// iter.remove(); // iter의 remove로 삭제해야함
// }
// }
// System.out.println(fruits);
// 3. 향상된 for문
// money in pocket
// 중간에 삭제할 때는 쓰지 않는다. 자바 버전마다 수행 방식이 다르다.
for (String fruit : fruits) {
System.out.println(fruit);
if (fruit.startsWith("b")) {
fruits.remove(fruit);
}
}
System.out.println(fruits);
}
}
III. 리스트가 제공하는 함수 사용하기
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Ex01 {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(5);
list.add(3);
list.add(9);
list.add(1);
System.out.println(list);
// list에 숫자 5가 들어있는가?
boolean containValue = list.contains(5);
System.out.println(containValue);
// 오름차순 정렬하기
list.sort(Comparator.naturalOrder());
System.out.println(list);
// 내림차순
list.sort(Comparator.reverseOrder());
System.out.println(list);
// list가 비어있는지?
System.out.println(list.isEmpty());
list.clear();
System.out.println(list.isEmpty());
}
}