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 |