본문 바로가기

Language/Java

[JAVA] Linked List

1. Linked List란? 

포인터가 다음 노드 가리키게 해서 이어져 있는 자료구조. 

중간 중간 삽입이 쉬움. (사람들이 서로 손 잡고 일렬로 서있는다고 생각해보자. 중간에 사람을 넣을 시 두 사람이 깎지를 떼고 그 사이에 넣으면 된다.)

List 형태(ArrayList, LinkedList)는 모두 중간 삽입이 된다.

또한 List 형태는 모두 중복된 값 삽입을 허용한다. 

 

2. 코드 리뷰  

import java.util.Collections;
import java.util.LinkedList;

public class _05_LinkedList {
    public static void main(String[] args) {
        //링크드 리스트
        LinkedList<String> list = new LinkedList<>();

        //데이터 추가
        list.add("유재석");
        list.add("조세호");
        list.add("김종국");
        list.add("박명수");
        list.add("강호동");

        //데이터 조회(인덱스)
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        // 맨 처음과 끝 가져오는 매소드
        System.out.println(list.getFirst());
        System.out.println(list.getLast());

        System.out.println("-------------------------------------");

        // 추가
        list.addFirst("서장훈");
        for(String s : list){

            System.out.println(s);
        }

        System.out.println("----------------------------------------");

        list.addLast("김희철");
        for(String s : list){

            System.out.println(s);
        }

        System.out.println("----------------------------------------------");

		//중간에 추가 
        System.out.println("학생 추가 전(index 1): " + list.get(1));
        list.add(1, "김영철");
        System.out.println("학생 추가 후(index 1): "+list.get(1));
        System.out.println("학생 추가 후(index 2): "+list.get(2));

        System.out.println("----------------------------------------------");

        //삭제(처음, 끝 원소 삭제도 가능)
        System.out.println("남은 학생 수(제외 전) : " +list.size());
        list.remove(list.size()-1);
        System.out.println("남은 학생 수(제외 후) : " +list.size());

        System.out.println("----------------------------------------------");

        //처음 학생과 마지막 학생이 전학
        for(String s : list){

            System.out.println(s);
        }
        System.out.println("남은 학생 수(전학 전) : " +list.size());
        list.removeFirst(); // 처음 데이터
        list.removeLast(); // 마지막 데이터
        System.out.println("남은 학생 수(전학 후) : " +list.size());

        for(String s : list){
            System.out.println(s);
        }

        System.out.println("----------------------------------------------");

        //변경(수강권 양도)
        list.set(0,"이수근");
        System.out.println(list.get(0));

        //확인
        System.out.println(list.indexOf("김종국"));
        if(list.contains("김종국")){
            System.out.println("수강신청 성공");
        }
        else {
            System.out.println("수강신청 실패");
        }

        System.out.println("----------------------------------------------");

        //전체 삭제
        list.clear();
        if(list.isEmpty()){
            System.out.println("학생 수: " + list.size());
            System.out.println("리스트가 비었습니다.");
        }

        // 새로운 학기 시작
        // 리스트는 중복 허용
        list.add("유재석");
        list.add("조세호");
        list.add("김종국");
        list.add("박명수");
        list.add("강호동");
        list.add("강호동");
        list.add("강호동");
        list.add("강호동");
        list.add("강호동");

        System.out.println("--------------------------------------------");

        //정렬
        Collections.sort(list);

        for(String s : list){
            System.out.println(s);
        }

    }
}

3. 스스로 해보기 

package WorkOut_Myself;

import java.util.Collections;
import java.util.LinkedList;

public class LinkedList_Myself {
    public static void main(String[] args) {
        //선언
        LinkedList<String> Academy = new LinkedList<>();

        //추가 - 처음, 끝, 중간

        //이건 디폴트로 맨 마지막에 추가
        Academy.add("김택곤");
        Academy.add("이학봉");
        Academy.add("최팔딱");
        Academy.add("이말년");
        Academy.add("카오붕가");
        Academy.add("카바니");
        Academy.add("룰루");

        System.out.println("<< 신규 추가 >>");

        for (String s :
                Academy) {
            System.out.println(s);
        }

        System.out.println("---------------------------");

        System.out.println("<< 2차 추가 >>");
        Academy.addFirst("하키미");
        Academy.addLast("David");
        Academy.add(4,"Bruno Ferenadez");

        for (String s :
                Academy) {
            System.out.println(s);
        }

        System.out.println("---------------------------");

        //조회 - 처음, 끝, 중간

        System.out.println("<< 회원 조회 >>");

        for (int i = 0; i < Academy.size(); i++) {
            System.out.println((i+1) + "번째 회원: " + Academy.get(i));
        }

        System.out.println("---------------------------");

        System.out.println("첫 회원 조회> " +(1)+"번: "+Academy.getFirst());
        System.out.println("마지막 회원 조회> " +(Academy.size())+"번: "+ Academy.getLast());

        System.out.println("---------------------------");

        //삭제 - 처음, 끝, 중간
        System.out.println("회원이 그만둠에 따른 삭제");
        Academy.remove(1);
        Academy.removeFirst();
        Academy.removeLast();

        for (int i = 0; i < Academy.size(); i++) {
            System.out.println((i+1) + "번째 회원: " + Academy.get(i));
        }


        System.out.println("---------------------------");




        //변경
        System.out.println("<<이학봉 회원의 수강권 양도>>");

        System.out.print(Academy.get(0) + ">> ");

        Academy.set(0,"이민혁");

        System.out.println(Academy.get(0));

        System.out.println("--------------------------------");

        //확인 (리스트 안에 있는지, 몇 번째 인지)

        System.out.println("룰루 회원은 몇 번째 인가? "+Academy.indexOf("룰루")+ " 번째");

        if(Academy.contains("카오붕가")){
            System.out.println("카오붕가 회원은 있습니다.");
        }

        System.out.println("--------------------------------");

        //전체 삭제
        Academy.clear();

        if(Academy.isEmpty()){
            System.out.println("수강명부가 비었습니다.");
        }

        System.out.println("--------------------------------");

        //새로 추가 및 정렬
        Academy.add("김택곤");
        Academy.add("이학봉");
        Academy.add("최팔딱");
        Academy.add("이말년");
        Academy.add("카오붕가");
        Academy.add("카바니");
        Academy.add("룰루");
        Academy.addFirst("하키미");
        Academy.addLast("David");
        Academy.add(4,"Bruno Ferenadez");

        Collections.sort(Academy);

        for (int i = 0; i < Academy.size(); i++) {
            System.out.println((i+1) + "번째 회원: " + Academy.get(i));
        }


    }
}

 

'Language > Java' 카테고리의 다른 글

[JAVA] HashMap  (0) 2023.02.13
[JAVA]HashSet  (0) 2023.02.09
[JAVA] ArrayList  (0) 2023.02.07
[JAVA] Wrapper Class  (0) 2023.02.07
[JAVA]Generics 심화  (0) 2023.02.06