1. 개념
- LinkedList는 배열의 단점(크기 설정 불가, 추가 삭제 시간이 오래걸림)을 보완한 자료구조이다
== LinkedList ==
1. 출력시 저장된 순서대로 나온다.
2. 중복된 데이터를 저장할 수 있다.
3. 데이터를 읽어오는 속도는 LinkedList 가 ArrayList 보다 상대적으로 느리다.
4. 순차적으로 데이터를 추가/삭제하는 경우에는 LinkedList 가 ArrayList 보다 상대적으로 느리다.
5. 일반적인 데이터 추가/삭제는 데이터 중간 중간마다 발생하므로 이러한 경우에는 LinkedList 가
ArrayList 보다 상대적으로 빠르다.
6. 결과값은 ArrayList 를 사용하든지 LinkedList 를 사용하든지 동일한 결과값을 가진다.
7. LinkedList 보다는 ArrayList 를 사용하도록 하자.
== LinkedList (저장소) ==
유재석(자신의 메모리주소 1372)----(앞서존재하던객체의 메모리주소 1372)엄정화(자신의 메모리주소 3236)----(앞서존재하던객체의 메모리주소 3236)강호동(자신의 메모리주소 1034)----(앞서존재하던객체의 메모리주소 1034)이순신(자신의 메모리주소 2340)---(앞서존재하던객체의 메모리주소 2340)김태희(자신의 메모리주소 5236)
== 엄정화 를 삭제할 경우
유재석(자신의 메모리주소 1372)----(앞서존재하던객체의 메모리주소 1372)강호동(자신의 메모리주소 1034)----(앞서존재하던객체의 메모리주소 1034)이순신(자신의 메모리주소 2340)---(앞서존재하던객체의 메모리주소 2340)김태희(자신의 메모리주소 5236)
== 엄정화 를 특정 위치에 추가할 경우
엄정화(자신의 메모리주소 7876)를 유재석 다음에 추가하고자 한다.
유재석(자신의 메모리주소 1372)----(앞서존재하던객체의 메모리주소 1372)엄정화(자신의 메모리주소 7876)----(앞서존재하던객체의 메모리주소 7876)강호동(자신의 메모리주소 1034)----(앞서존재하던객체의 메모리주소 1034)이순신(자신의 메모리주소 2340)---(앞서존재하던객체의 메모리주소 2340)김태희(자신의 메모리주소 5236)
2. 활용
1) 객체생성
List<Member> mbrList = new LinkedList<>();
mbrList.add(new Member("youjs", "Qwer1234$", "유재석", "7209101"));
mbrList.add(new Member("eom","Qwer1234$","엄정화", "6808152"));
mbrList.add(new Member("kanghd","Qwer1234$","강호동", "7006151"));
mbrList.add(new Member("leess","Qwer1234$","이순신", "0010203"));
mbrList.add(new Member("kimth","Qwer1234$","김태희", "0105064"));
mbrList.add(new Member("kangkc","Qwer1234$","강감찬", "9812301"));
mbrList.add(new Member("kimss","Qwer1234$","김순신", "0203203"));
Member mem1 = new Member("kwonjy","Qwer1234$","권지용", "0303203");
Member mem2 = mem1;
mem2.setName("지드래곤");
mbrList.add(mem1);
mbrList.add(mem2);
2) 객체 출력
for (int i = 0; i<mbrList.size(); i++) {
System.out.println(mbrList.get(i));
}
for(Member mbr : mbrList) {
System.out.println(mbr);
}
3) 특정 정보를 가진 객체 출력(판별변수 활용)
for(Member mbr : mbrList) {
if("남".equals(mbr.gender())) {
System.out.println(mbr);
}
}
boolean exist = false;
-------------------------------------------------------
for(Member mbr : mbrList) {
if((mbr.getName().indexOf("순신")) == 1) {
System.out.println(mbr);;
exist = true;
}
}
if(!exist) {
System.out.println("순신이라는 이름을 가진 회원은 없습니다.");
}
4) 기존 객체에 새로운 객체 추가 / 객체 삭제 / 리스트 길이 확인
mbrList.add(3, new Member("chaew","Qwer1234$","차은우", "0104053"));
mbrList.remove(3);
System.out.println(">> 삭제한 후 mbrList.size() => " + mbrList.size() +"\n");