참조형 데이터를 쉽고 효과적으로 처리할 수 있는 기능을 지니고 있다. (크기 자동 조정, 추가, 수정, 삭제 등)순서가 있고, 데이터 중복이 가능한 데이터의 집합이다. 📌 레퍼런스 타입 보러가기 : 래퍼 클래스 부분 참고
💡
List <레퍼런스 타입> 변수 = new ArrayList <>():로 쓸 수도 있다.
추가 변수.add(데이터)
삭제 변수.remove(index)
전체 삭제를 원할 경우에는 변수.clear ( )을 하면된다.
수정 변수.set(index, 바꿀 값)
가져오기 변수.get(index)
💡
변수.toString ( ):리스트 내의 값을 사람이 보기 쉽게 해준다.List<Integer> intList = new ArrayList<Integer>(); // 선언 및 생성 intList.add(1); intList.add(2); intList.add(3); System.out.println(intList.toString());[출력] ➡︎ [1,2,3]
여러 곳에 실제 값을 담아둔다. 값을 추가하고 삭제하는 것은 빠르다. LinkedList <레퍼런스 타입> 변수 = new ArrayList <>();
💡
linkedList.add (index, 추가 값):중간에 값을 추가할 수 있다.
FILO를 따른다. 💡 FILO:
First Input Last Out의 줄임말로 가장 먼저 들어온 값이 가장 나중에 나간다는 의미이다.
Stack <레퍼런스 타입> 변수 = new Stack <>();
넣기 변수.push(데이터)
조회 변수.peek()
가장 마지막에 추가된 데이터가 조회된다.
변수.pop() 💡
변수.isEmpty ( ):stack에 쌓인 데이터가 없는 경우 TRUE, 있는 경우 FALSE를 반환한다.
💡 크기를 알고싶은 경우변수.size()를 하면된다.Stack<Integer> intStack = new Stack<Integer>(); // 선언 및 생성 intStack.push(1); intStack.push(2); intStack.push(3); while (!intStack.isEmpty()) { // 다 지워질때까지 출력 System.out.println(intStack.pop()); // 3,2,1 출력 }
📌 생성자 개념 보러가기
클래스 설계하기의 생성자 정의 부분 참고
FIFO를 따른다. 💡 FIFO:
First Input First Out의 줄임말로 가장 먼저 들어온 데이터가 가장 먼저 나간다는 의미이다.
Queue <레퍼런스 타입> 변수 = new LinkedList <>();
❗생성자가 없기 때문에 생성자가 있는 LinkedList를 사용해 생성할 수 있다.
넣기 변수.add(데이터)
조회 변수.peek()
가장 먼저 추가된 데이터가 조회된다.
변수.poll() 💡 크기를 알고싶은 경우
변수.size()를 하면된다.
순서가 없으나, 데이터 중복이 허용되지 않는다. Set <레퍼런스 타입> 변수 = new HashSet <>();
❗생성자가 없기 때문에 생성자가 있는
HashSet,TreeSet등을 사용해 생성할 수 있다.
💡 보통 HashSet을 쓰지만 순서 보장이 필요할 때에는 LinkedHashSet을 사용한다.
💡
변수.contains (확인할 값) :set에 해당하는 값이 있는지 물어보는 메서드로 맞다면true, 틀리면false를 반환한다.Set<Integer> intSet = new HashSet<Integer>(); // 선언 및 생성 intSet.add(1); intSet.add(2); intSet.add(3); System.out.println(intSet.contains(2)); // true 출력 System.out.println(intSet.contains(4)); // false 출력
Key와 value로 구성되어 있다.value를 조회할 수 있다. Map <Key 레퍼런스, value 래퍼런스> 변수 = new HashMap <>();
❗Map으로도 생성할 수 있지만 HashMap, TreeMap 등으로 응용해서 사용할 수도 있다.
💡 HashMap: 중복을 허용하지 않고, 순서를 보장하지 않지만Key와 Value를 NULL로 할 수 있다.
💡 TreeMap: Key값을 기준으로 정렬할 수 있지만, 오름차순을 하기 때문에저장시간이 오래걸린다.
넣기 변수.put(key, value)
조회 변수.get(key)
key를 통해 value를 조회할 수 있다.
삭제 변수.remove({key})
Key만 빼기 변수.keySet()
value만 빼기 변수.values()
💡 Key만 빼기, value만 빼기 사용 예시
// key 값 전체 출력 for (String key : 변수.keySet()) { System.out.println(key); } // value 값 전체 출력 for (Integer value : 변수.values()) { System.out.println(value); }
❗
Key가 중복인 경우가장 마지막에 추가된 데이터로 덮어씌워진다.변수.put("삼", 14); 변수.put("삼", 15);➡︎ "삼"으로 key가 중복되었기 때문에
"삼"이라는 key의 value는 15로 덮어씌워진다.