• List, ArrayList, LinkedList 사용법 & 간단 사용 예제

    2021. 10. 30.

    by. 순일

     

    List : 데이터를 관리하기 위한 자료구조, 배열은 중간 부분이 삭제되면 해당 부분을 비워두지만 리스트는

    삭제가 일어나면 뒤에 데이터들이 앞으로 당겨진다.

     

    ArrayList : List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 리스트.

    인덱스를 이용해 데이터를 가져오는 것이 빈번하다면 ArrayList가 빠름

    ArrayList 추가 삭제 시 인덱스가 한 칸씩 뒤로 밀리거나 당겨진다.

     

    LinkedList : 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 리스트.

    데이터의 추가/삭제가 빈번하다면 LinkedList가 빠름

    LinkedList 추가 삭제 시 앞뒤 링크만 변경하면 된다.

     

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    
    public class ListTest {
    
    	public static void main(String[] args) {
    		List<Integer> list = new ArrayList<>();
    		list.add(1);
    		list.add(3);
    		list.add(1, 2);
    		list.remove(2);
    		list.sort((a,b) -> b-a);
    		System.out.println(list.get(0));
    		for (Integer integer : list) {
    			System.out.print(integer + " ");
    		}
    		System.out.println();
    		System.out.println();
    		
    		ArrayList<Integer> arraylist = new ArrayList<>();
    		arraylist.add(1);
    		arraylist.add(3);
    		arraylist.add(1, 2);
    		System.out.println(arraylist.indexOf(1)); // 해당 데이터 위치 반환 없으면 -1
    		arraylist.set(2, 4); // add는 추가라면 set은 값 바꿈
    		Integer[] arr = new Integer[arraylist.size()]; //int는 오류남 아마 형이 안맞아서?
    		arraylist.toArray(arr);
    		System.out.println(Arrays.toString(arr));
    		for (Integer integer : arraylist) {
    			System.out.print(integer+" ");
    		}
    		System.out.println();
    		System.out.println();
    		
    		LinkedList<Integer> linkedlist = new LinkedList<>();
    		linkedlist.add(1);
    		linkedlist.add(2);
    		linkedlist.add(3);
    		linkedlist.addFirst(0);
    		linkedlist.addLast(4);
    		System.out.println(linkedlist.getFirst());
    		System.out.println(linkedlist.getLast());
    		linkedlist.push(6);
    		System.out.println(linkedlist.pop());
    		linkedlist.push(5); // push 하면 젤뒤로 들어갈줄 알았는데 젤 앞으로 들어감
    		for (Integer integer : linkedlist) {
    			System.out.print(integer+" ");
    		}
    	}
    }

     

    실행 결과

    728x90

    댓글