== 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 |