Java

컬렉션(Collection) - 2. ArrayList

에어팟맥스 2022. 6. 28. 20:56

 == ArrayList == 
   1. 출력시 저장된 순서대로 나온다.
   2. 중복된 데이터를 저장할 수 있다.
   3. 데이터를 읽어오는 속도는 ArrayList 가 LinkedList 보다 상대적으로 빠르다.
   4. 순차적으로 데이터를 추가/삭제하는 경우에는 ArrayList 가 LinkedList 보다 상대적으로 빠르다.
   5. 일반적인 데이터 추가/삭제는 데이터 중간 중간마다 발생하므로 이러한 경우에는 ArrayList 가 LinkedList 보다 상대적으로 느리다.
   6. 결과값은 ArrayList 를 사용하든지 LinkedList 를 사용하든지 동일한 결과값을 가진다.
   7. LinkedList 보다는 ArrayList 를 사용하도록 하자.

 

 

	public static void main(String[] args) {
		
		// 1. Member 클래스의 객체만을 저장할 수 있는 ArrayList 객체 mbr 리스트를 생성하시오.
		ArrayList<Member> mbrList = new ArrayList<>();
		
		// 2. Member 클래스의 객체 6개를 생성하여 mbrList 에 저장하시오.
		mbrList.add(new Member("youjs","qwer1234$","유재석"));
	    mbrList.add(new Member("eom","qwer1234$","엄정화"));
	    mbrList.add(new Member("kanghd","qwer1234$","강호동"));
	    mbrList.add(new Member("leess","qwer1234$","이순신"));
	    mbrList.add(new Member("kimth","qwer1234$","김태희"));
	    mbrList.add(new Member("leess","qwer1234$","이순신"));
	    mbrList.add(new Member("kangkc","qwer1234$","강감찬"));
	    mbrList.add(new Member("leehr","qwer1234$","이혜리"));
		
	    // 3. mbrList 에 저장되어진 모든회원들의 정보를 출력하도록 Member 클래스에 정의된 info_print() 메소드를 실행하시오.
	    
	    // mbrList 에 저장되어진 데이터의 개수는 mbrList.size() 로 알아온다.
	    System.out.println(mbrList.size()); // 8
	    
	    for(int i=0; i<mbrList.size(); i++) {
	    	
	    	mbrList.get(i).info_print();
	    	
	    } // end of for -------------------------------------------------
	    
	    System.out.println("\n~~~~~~~~~~~~~~ 또는 ~~~~~~~~~~~~~~\n");
	    
	    // mbr 은 지역변수, mbrList.size() 만큼 반복
	    for( Member mbr : mbrList) {
	    	mbr.info_print();
	    } // end of for --------------------------------------------------

   

 

=== ArrayList 타입인 mbrList 에 새로운 Member 객체 추가시 특정 index(위치)에 저장되도록 할 수 있다. === 

		System.out.println("\n~~~ mbrList 에 새로운 Member 객체 추가하기 ~~~\n");
	    
	    mbrList.add(new Member("seolh","qwer1234$","설현"));
	    // index 값이 없으면 mbrList 의 맨 뒤에 추가된다.
	    
	    mbrList.add(3, new Member("chaew","qwer1234$","차은우"));
	    //          3 이 특정 인덱스이다.
	    // 유재석(0) 엄정화(1)  강호동(2)  이순신(3) 에서
	    // 유재석(0) 엄정화(1)  강호동(2)  차은우(3)  이순신(4) 으로 된다.
	    
	    for( Member mbr : mbrList) {
	    		mbr.info_print();
	    } // end of for

 

=== ArrayList 타입인 mbrList 에 저장되어진 Member 객체 삭제하기 === 

		System.out.println("\n~~~ ArrayList 타입인 mbrList 에 저장되어진 Member 객체 삭제하기 ~~~\n");
	    
	    System.out.println( ">> 삭제하기 전 mbrList.size() => " + mbrList.size() );
	    // >> 삭제하기 전 mbrList.size() => 9
	    
	    mbrList.remove(3);   // mbrList.remove(삭제할 Member 객체의 인덱스번호);
	    
	    System.out.println( ">> 삭제 후 mbrList.size() => " + mbrList.size() );
	    // >> 삭제 후 mbrList.size() => 8
	    
	    for( Member mbr : mbrList) {
    		mbr.info_print();
	    } // end of for

 

=== mbrList 에 저장된 모든 객체 삭제하기 ===

		System.out.println("\n=== mbrList 에 저장된 모든 객체 삭제하기 ===\n");
	    mbrList.clear();
	    
	    System.out.println( ">> 삭제 후 mbrList.size() => " + mbrList.size() );
	    // 삭제 후 mbrList.size() => 0

 

 

 

[퀴즈 1]

 mbrList 에 저장되어진 Member 객체들 중에서 id 값이 "leess" 인 회원만 그 회원의 정보를 출력하세요

System.out.println("\n~~~~~~~~~~~~~~ [퀴즈 1] ~~~~~~~~~~~~~~\n");
	    
	    /*
	      [퀴즈 1]
	      mbrList 에 저장되어진 Member 객체들 중에서 id 값이 "leess" 인 회원만 그 회원의 정보를 출력하세요
	     */
	    
	    for( Member mbr : mbrList) {
	    	if("leess".equals(mbr.id)) {
	    		mbr.info_print();
	    	}
	    } // end of for
	    
	    // or 
	    
	    for(int i=0; i<mbrList.size(); i++) {
	    	if("leess".equals(mbrList.get(i).id)) {
	    		mbrList.get(i).info_print();
	    	}
	    } // end of for

 

 

[퀴즈 2]
      mbrList 에 저장되어진 Member 객체들 중에서 name 이 "이" 씨인 회원만 회원정보를 출력하기
      mbrList 에 저장되어진 Member 객체들 중에서 name 이 "서" 씨인 회원만 회원정보를 출력하기
      >> 회원중 "서" 씨는 없습니다. <<

System.out.println("\n~~~~~~~~~~~~~~ [퀴즈 2] ~~~~~~~~~~~~~~\n");
	    
	    /*
	      [퀴즈 2]
	      mbrList 에 저장되어진 Member 객체들 중에서 name 이 "이" 씨인 회원만 회원정보를 출력하기
	      mbrList 에 저장되어진 Member 객체들 중에서 name 이 "서" 씨인 회원만 회원정보를 출력하기
	      >> 회원중 "서" 씨는 없습니다. <<
	      
	     */
	    
	    for(int i=0; i<mbrList.size(); i++) {
	    	
	    	if( mbrList.get(i).name.startsWith("이") ) {
	    		mbrList.get(i).info_print();
	    	}
	    }
	    
	    for( Member mbr : mbrList) {
	    	if(mbr.name.startsWith("이")) {
	    		mbr.info_print();
	    	}
	    } // end of for
	    
	    String first_name = "이";
	    
	    boolean b = false;
	    for( Member mbr : mbrList) {
	    	
	    	if(mbr.name.startsWith(first_name)) {
	    		mbr.info_print();
	    		b = true;
	    	}
	    	
	    } // end of for
	    if(!b) {
	    	System.out.println(">> 회원중 \"" + first_name + "\" 씨는 없습니다. <<");
	    }

 

[퀴즈 3]
     mbrList 에 저장되어진 Member 객체들 중에서 
     name 이 "이" 씨인 회원들을 삭제하고
     삭제한 후 mbrList 에 저장되어진 Member 객체들의 정보를 출력하세요

		System.out.println("\n~~~~~~~~~~~~~~ [퀴즈 3] ~~~~~~~~~~~~~~\n");
	    
	    mbrList.add(new Member("leemh","qwer1234$","이민호"));
	    mbrList.add(new Member("leesk","qwer1234$","이승기"));
	    
	    /*
	     [퀴즈 3]
	     mbrList 에 저장되어진 Member 객체들 중에서 
	     name 이 "이" 씨인 회원들을 삭제하고
	     삭제한 후 mbrList 에 저장되어진 Member 객체들의 정보를 출력하세요
	     */
	    
	    
	    // 내 풀이
	    int count = 0;
	    for(int i=0; i<mbrList.size(); i++) {
	    	
	    	if(  mbrList.get(i-count).name != null
	    			&& mbrList.get(i-count).name.startsWith("이") ) {
	    		
	    		mbrList.remove(i-count);
	    		count++;
	    	}
	    	else {
	    		mbrList.get(i-count).info_print();
	    	}
	    }
	    
	    
	    // 선생님 풀이
	/*    for(int i=mbrList.size()-1; i>=0; i--) {
	    	if( mbrList.get(i).name != null && mbrList.get(i).name.startsWith("이")) {
	    		mbrList.remove(i);
	    		
	    	}
	    }
	    for( Member mbr : mbrList) {
    		mbr.info_print();
	    } // end of for
	    */
	   
	  /*  
	   // 유재석(0) 엄정화(1) 강호동(2) 이순신(3) 김태희(4) 강감찬(5) 이혜리(6) 설현(7) 이민호(8) 이승기(9)
	   이순신(3) 삭제 -> 유재석(0) 엄정화(1) 강호동(2) 김태희(3) 강감찬(4) 이혜리(5) 설현(6) 이민호(7) 이승기(8)
	   이혜리(6) 삭제 -> 유재석(0) 엄정화(1) 강호동(2) 김태희(3) 강감찬(4) 설현(5) 이민호(6) 이승기(7)
	   이민호(8) 삭제 -> 유재석(0) 엄정화(1) 강호동(2) 김태희(3) 강감찬(4) 설현(5) 이승기(6)
	   이승기(9) 삭제 -> 유재석(0) 엄정화(1) 강호동(2) 김태희(3) 강감찬(4) 설현(5) 
	    
	   */

 

[퀴즈 4]
     mbrList 에 저장되어진 Member 객체들 중에서 특정한 조건(name 이 "강호동")에 만족하는 Member 객체를 삭제하고
     삭제되어진 그 인덱스(위치)에 새로운 Member 객체를 넣어주기
     
     그런데 만약 특정한 조건(name 이 "강호동")에 만족하는 Member 객체가 없는 경우
     새로운 Member 객체는 맨 뒤에 넣어주기

		 System.out.println("\n~~~~~~~~~~~~~~ [퀴즈 4] ~~~~~~~~~~~~~~\n");
	    /*
	     [퀴즈 4]
	     mbrList 에 저장되어진 Member 객체들 중에서 특정한 조건(name 이 "강호동")에 만족하는 Member 객체를 삭제하고
	     삭제되어진 그 인덱스(위치)에 새로운 Member 객체를 넣어주기
	     
	     그런데 만약 특정한 조건(name 이 "강호동")에 만족하는 Member 객체가 없는 경우
	     새로운 Member 객체는 맨 뒤에 넣어주기
	     
	     */
	    
	    b = false;
	    for(int i=mbrList.size()-1; i>=0; i--) {
	    	if( "강호동".equals(mbrList.get(i).name) ) {
	    		mbrList.remove(i);
	    		mbrList.add(i, new Member("seokj", "qWer1234$","서강준"));
	    		b = true;
	    		break;
	    		
	    	}
	    }
	    if(!b) {
	    	mbrList.add(new Member("seokj", "qWer1234$","서강준"));
	    }
	    
	    for( Member mbr : mbrList) {
    		mbr.info_print();
	    } // end of for

'Java' 카테고리의 다른 글

컬렉션(Collection) - 4. HashMap  (0) 2022.06.29
컬렉션(Collection) - 3. LinkedList  (0) 2022.06.29
콜렉션(Collection) - 1  (0) 2022.06.28
람다(Lambda)  (0) 2022.06.28
익명(무명)클래스(anonymousClass)  (0) 2022.06.28