위와 같은 기능을 가지고 있고 순서가 있으면서 중복이 허용되는 자료구조를 List라고 한다.
ArrayList는 배열을 조금 더 편하게 쓸 수 있도록 Java에서 제공해주는 Class 이다.
일반 배열과는 다르게 메모리가 가능한한 추가할 수 있고 삭제에 대해서도 해당 index를 비워 두기만 하는게 아니라 재정렬 해주는 기능을 기본으로 제공해주고 있다.
List<> list = new ArrayList<>();
< >
제네릭 타입으로 선언한다면 해당 타입만 ArrayList에 담을 수 있다.
List<String> list = new ArrayList<String>();
list.add("포도");
list.add("사과");
list.add("수박");
add()
메소드를 활용해 List에 데이터를 적재 할 수 있다.
List<String> list = new ArrayList<String>();
list.add("포도"); //get(0)
list.add("사과"); //get(1)
list.add("수박"); //get(2)
list.remove(1); // 해당 인덱스 삭제 (사과 삭제)
remove(int index)
메소드는 list의 index번째 데이터를 삭제 하는 것이다
List<String> list = new ArrayList<String>();
list.add("포도"); //get(0)
list.add("사과"); //get(1)
list.add("수박"); //get(2)
list.remove(1);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
get()
메소드는 해당 인덱스의 데이터를 가져오는 것이다.
List<String> list = new ArrayList<String>();
list.add("포도"); //get(0)
list.add("사과"); //get(1)
list.add("수박"); //get(2)
Iterator<String> iter = list.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
Iterator<>
는 자료구조(List, Map, Set)을 탐색하기 위한 방법이다.
따라서 List에 담긴 데이터를 출력할 때 for
문으로 하는 방법과 위 와 같은 방법이 있다.
연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조 이다.
데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당한다.
Node는 LinkedList에 객체를 추가하거나 삭제하면 앞뒤 링크만 변경되고 나머지 링크는 변경 되지 않는다.
List<> list = new LinkedList<>();
ArrayList 처럼 제네릭 타입으로 선언 한다면 해당 타입만 사용 가능 하다.
LinkedList<Integer> list = new LinkedList<Integer>();
list.addFirst(1);//가장 앞에 데이터 추가
list.addLast(2);//가장 뒤에 데이터 추가
list.add(3);//데이터 추가
list.add(1, 10);//index 1에 데이터 10 추가
ArrayList와 다른 점은 가장 앞,뒤에 데이터를 추가 할 수 있다.
LinkedList<Integer> list = new LinkedList<Integer>(Arrays.asList(1,2,3,4,5));
list.removeFirst(); //가장 앞의 데이터 제거
list.removeLast(); //가장 뒤의 데이터 제거
list.remove(); //생략시 0번째 index제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
ArrayList와 다른 점은 가장 앞,뒤에 데이터를 삭제 할 수 있다.
이 외 반복, 출력, 크기 등은 ArrayList와 동일 하다.
참고자료
https://power-overwhelming.tistory.com/23
https://dev-whoan.xyz/5
https://www.nextree.co.kr/p6506/