백준 문제를 풀면서 자바에 대한 지식을 익히도록 노력하는 중이다.
Array, ArrayList와 hashSet, hashMap에 대한 내용을 알아보자.

크기가 선언 시에 고정이 되어있음.
선언 이후 변경 불가
int[] arr1 = new int[5]; // 기본값 0
String[] arr2 = new String[3]; // 기본값 null
double[] arr3 = new double[4]; // 기본값 0.0
순서가 정해져 있듯이 arr[3] 으로 접근함.
arr.length
arr[0] = 10; //삽입
System.out.println(arr[0]); //출력
//삭제 -> 값을 당겨야 함
int[] arr = {10, 20, 30, 40, 50}; //초기화
int index = 2; //2번(30) 값 지우고 싶음
for (int i = index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1]; // 한 칸씩 당김
}
arr[arr.length - 1] = 0; //마지막 남는 자리는 0으로 설정
import java.util.ArrayList; //java.util 패키지에 있음
ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();
List<String> list = new ArrayList<>(); //또는 이렇게 선언도 가능
메서드로 조작 -> add(), get(), remove(), size() 등등
list.add("apple");
list.add(1, "grape");
System.out.println(list.get(1)); // "grape"
list.remove(1); // grape 삭제
System.out.println(list.size()); // 1
list.set(0, "kiwi"); // apple -> kiwi
System.out.println(list.contains("kiwi")); // 존재하는 지 유무 true
list.clear(); // 모든 값 삭제
인덱스에 접근해서 사용하고
순서를 유지함
-> 중복을 허용하지 않음
HashSet<Integer> arr = new HashSet<>();
HashSet<String> arr = new HashSet<>();
add(), contains(), remove(), size()
arr.add("apple"); //추가
arr.add("banana");
arr.add("apple"); // 중복은 무시됨
System.out.println(arr); //apple과 banana 출력인데 순서는 X
System.out.println(arr.contains("banana")); // 존재유무 true
arr.remove("banana"); //제거
System.out.println(arr.size()); //크기 (현재는 1)
arr.clear(); //전체 삭제
해시 기반 구조
검색 속도 빠름
Key는 중복 불가
Value는 중복 가능
import java.util.HashMap;
HashMap<String, Integer> arr = new HashMap<>();
put(key, value), get(key), containsKey(key), containsValue(value), remove(key)
arr.put("apple", "3");
arr.put("banana", "5");
arr.put("apple", "10"); //apple이라는 키가 같기 때문에 value는 10으로 갱신됨
System.out.println(arr); //{apple=10, banana=5}
System.out.println(arr.get("apple")); // 10
System.out.println(arr.containsKey("banana")); // 키 존재 여부 : true
System.out.println(arr.containsValue(100)); // Value 존재 여부 : false
arr.remove("banana"); //키에 따른 정보 제거
System.out.println(arr.size()); //1
arr.clear(); //전체 삭제
내부적으로 배열 + 연결리스트/트리를 사용
인덱스가 아닌 Key값으로 접근함