[java] LinkedList

심심이·2024년 3월 3일
0

java

목록 보기
39/46

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) 객체생성

// Member 클래스의 객체만을 저장할 수 있는 ArrayList 객체 mbrList를 생성한다.
	List<Member> mbrList = new LinkedList<>();
		
	// Member 클래스의 객체 7개를 생성하여 mbrList에 저장한다.
	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");
    // mem1에 새로운 Member객체 메모리 주소 할당
	Member mem2 = mem1;
    // mem1의 메모리주소 mem2에 할당
	mem2.setName("지드래곤");
    // mem2의 name field 변경
	    
	mbrList.add(mem1); // 중복된 데이터를 저장할 수 있다.
	mbrList.add(mem2); // 중복된 데이터를 저장할 수 있다.
    
    
    
    

2) 객체 출력

    // mbrList 에 저장되어진 모든 회원들의 정보를 출력하도록 한다.
    for (int i = 0; i<mbrList.size(); i++) {
            System.out.println(mbrList.get(i));
        }
        
        
// mbrList 에 저장되어진 모든 회원들의 정보를 출력하도록 한다.
	for(Member mbr : mbrList) {
	//   제너릭 변수이름   리스트
		System.out.println(mbr); // 반복해서 정보 출력
	} 
		

3) 특정 정보를 가진 객체 출력(판별변수 활용)

for(Member mbr : mbrList) { // mbrList를 반복
	if("남".equals(mbr.gender())) { 
    	System.out.println(mbr); // 정보 출력
    }
}
boolean exist = false; // 판별 변수

-------------------------------------------------------


for(Member mbr : mbrList) {  // mbrList를 반복
	if((mbr.getName().indexOf("순신")) == 1) { // mbr 객체의 이름 중 두번째에 순신으로 시작하는 객체
		System.out.println(mbr);; // 정보 출력
		exist = true; // 판별변수 변경
	}
} // end of for--------------------------
if(!exist) { // 판별변수가 false로 유지되어 for문을 나온 경우
	System.out.println("순신이라는 이름을 가진 회원은 없습니다.");
}

4) 기존 객체에 새로운 객체 추가 / 객체 삭제 / 리스트 길이 확인

// add(index, Object)
mbrList.add(3, new Member("chaew","Qwer1234$","차은우", "0104053"));
// 3번 인덱스(4번째)에 새로운 객체추가

//remove(index)
mbrList.remove(3); // remove(리스트의 삭제할 인덱스)
		
System.out.println(">> 삭제한 후 mbrList.size() => " + mbrList.size() +"\n");
// mbrList.size() => 리스트의 길이(크기) 확인
profile
개발하는 심심이

0개의 댓글

관련 채용 정보