자료 수집·구조화 방법
※ '링크구조' 란?
[ 5 ] → [ 4 ] → [ 7 ] → [ 10 ]
연결 방법 : 자신 + 뒤 값의 주소
5·4주소 → 4·7주소 → 7·10주소 → 10·뒤 주소X
if) 중간 [ 4 ] 삭제 시, index를 전체 옮기는 것이 아니라,
삭제된 element의 앞에 연결된 뒤의 주소만 수정함 >> 처리가 빠름!!!
| 주요 메소드 | 설명 |
|---|---|
| .add( element ) | element를 리스트 가장 뒤에 추가 |
| .add( index, element ) | 지정 index에 element를 삽입 |
| .set( index, element ) | 지정 index에 element를 수정 |
| .get( index ) | 지정 index에 element를 호출 |
| .size() | 리스트 내 element의 개수 반환 |
| .contains( element ) | element가 존재하면 true, 없으면 false |
| .indexOf( element ) | element가 존재하면 index 수를 반환, 없으면 -1을 반환 |
| .remove( index ) | index의 element를 삭제 |
| .isEmpty() | element가 비어있으면 true, element가 존재하면 false |
| .clear() | list의 모든 element를 삭제 |
| .forEach( ( 반복변수 ) -> { 실행문 } ); | list의 첫번째 요소부터 마지막 요소까지 순서대로 반복변수에 대입하여 실행 -> : 화살표 연산자 |
public class Practice {
public static void main(String[] args) {
// [1] 인터페이스타입 변수명 = new 클래스명();
List<String> list1 = new ArrayList<>(); // List 인터페이스에 ArrayList 클래스 객체를 생성 (다형성에 따라 가능)
ArrayList<String> list2 = new ArrayList<>(); // ArrayList 클래스 객체 생성
// [2] List 인터페이스 주요 메소드
// [2.1] .add( 자료 ) : 자료를 리스트에 마지막 요소로 추가
list2.add("유재석");
list2.add("강호동");
list2.add("신동엽");
list2.add("유재석");
System.out.println(list2); // [유재석, 강호동, 신동엽, 유재석]
list2.add(3, "박명수"); // 지정 index에 element를 삽입
System.out.println(list2); // [유재석, 강호동, 신동엽, 박명수, 유재석]
// [2.2] .set( element ) : 지정 index에 element를 수정
list2.set(4, "정준하");
System.out.println(list2); // [유재석, 강호동, 신동엽, 박명수, 정준하]
// [2.3] .get( index ) : 지정 index에 element를 호출
String result = list2.get(2);
System.out.println(result); // 신동엽
// [2.4] .size() : 리스트 내 element의 개수 반환
System.out.println(list2.size()); //5
// [2.5] .contains( element ) : element가 존재하면 true, 없으면 false
boolean bool = list2.contains("서장훈");
System.out.println(bool); // false
// [2.6] .indexOf( element ) : element가 존재하면 index 수를 반환, 없으면 -1을 반환
System.out.println(list2.indexOf("서장훈")); // -1 >> 존재하지 않음
System.out.println(list2.indexOf("유재석")); // 0
// [2.7] .remove( index ) : index의 element를 삭제
list2.remove(1); // index 1 : 강호동
System.out.println(list2); //[유재석, 신동엽, 박명수, 정준하]
// [2.8] .isEmpty() : element가 비어있으면 true, element가 존재하면 false
System.out.println(list1.isEmpty()); // true
System.out.println(list2.isEmpty()); // flase
// 유효성 검사를 통해 배열이 비어있는지 확인
// [2.9] .clear() : list의 모든 element를 삭제
// list2.clear();
// System.out.println(list2); // []
// [2.10] list와 반복문 활용
// [2.10.1] 일반 for 문
for(int i = 0 ; i < list2.size() ; i++){
System.out.println(list2.get(i));
}
// [2.10.2] 향상된 for 문
for(String str : list2){
System.out.println(str);
}
// [2.10.3] forEach 문 ☆★☆★☆★☆★☆★☆★☆★
// list2.forEach( ( 반복변수 ) -> { 실행문 } );
// list의 첫번째 요소부터 마지막 요소까지 순서대로 반복변수에 대입하여 실행한다.
System.out.println("[2.10.3]");
list2.forEach( str -> {System.out.println(str);} );
// 람다식 함수 =====☆★☆★☆★☆★☆★☆★☆★
// 복잡한 함수 선언 방식을 간소화
// ( 매개변수 ) -> { 실행문 }
} //main end
} // class end
※ Set 인터페이스는 index가 존재하지 않으므로, index를 사용하는 모든 메소드를 사용할 수 없음
ex ) .get() .set() .indexOf()
| 주요 메소드 | 설명 |
|---|---|
| .add( element ) | 집합 내 element를 삽입 |
| .size() | 집합의 총 element 개수를 반환 |
| .containts( element ) | element가 존재하면 true, 없으면 false |
| .remove( element ) | element가 존재하면 삭제 |
| .inEmpty() | 집합 내 element가 없으면 true, 있으면 false |
| .clear() | 집합 내 모든 element를 삭제 |
public class Practice {
public static void main(String[] args) {
// [1] HashSet 객체 생성
Set<String> set1 = new HashSet<>();
// [2] 주요 메소드
// [2.1] .add( element ) : 집합 내 element를 삽입
set1.add("배두훈");
set1.add("강형호");
set1.add("조민규");
set1.add("고우림");
System.out.println(set1); // [배두훈, 조민규, 강형호, 고우림]
set1.add("배두훈"); // 이미 존재하는 element이므로 중복 불가
System.out.println(set1); // [배두훈, 조민규, 강형호, 고우림]
// [2.2] .size() : 집합의 총 element 개수를 반환
System.out.println(set1.size()); // 4
// [2.3] .containts( element ) : element가 존재하면 true, 없으면 false
System.out.println(set1.contains("강형호")); // true
// [2.4] .remove( element ) : element가 존재하면 삭제
set1.remove("고우림");
System.out.println(set1); //[배두훈, 조민규, 강형호]
// [2.5] .inEmpty() : 집합 내 element가 없으면 true, 있으면 false
System.out.println(set1.isEmpty()); // false
// [2.6] .clear() : 집합 내 모든 element를 삭제
// ※ 집합은 index가 존재하지 않으므로, index를 사용하는 모든 메소드를 사용할 수 없음
// .get() .set() .indexOf()
// [3] Set·집합과 반복문의 관계
// [3.1] 일반 for
// index가 없으므로 사용 불가
// [3.2] 향상 for
for(String str: set1){
System.out.println(str);
}
// [3.3] forEach 문
set1.forEach( (str) -> System.out.println(str));
} //main end
} // class end
| 주요 메소드 | 설명 |
|---|---|
| .put( key , value ) | Map 객체에 Key·속성명과 value·속성값을 한 쌍·entry로 한 자료를 삽입 |
| .get(Key) | Map 객체 내에서 Key의 Value를 반환 |
| .size() | Map 객체내의 entry 개수를 반환 |
| .remove(key) | Map 객체 내의 Key에 해당하는 entry를 삭제 |
| .containsKey( key ) | Key가 존재하면 true / 없으면 false |
| .containsValue( Value ) | Value가 존재하면 true / 없으면 false |
| .clear() | 모든 entry를 삭제 |
| .isEmpty() | Map객체 내에 entry가 없으면 true, 있으면 false |
| .entrySet() | Map 객체내 모든 entry를 set 인터페이스로 반환 |
| .keySet() | Map 객체 내의 모든 key를 set 인터페이스로 반환 |
| .values() | 모든 Value를 List 인터페이스로 반환 |
public class Practice {
public static void main(String[] args) {
// [1] HashMap 객체 생성 : < Key 타입, Value 타입>
Map<String, Integer> map = new HashMap<>();
// [2] 주요 메소드
// [2.1] .put( key , value ) : Map 객체에 Key·속성명과 value·속성값을 한 쌍·entry로 한 자료를 삽입
map.put("배두훈", 98);
map.put("강형호", 97);
map.put("조민규", 96);
map.put("고우림", 99);
System.out.println(map); // {배두훈=98, 조민규=96, 강형호=97, 고우림=99}
map.put("고우림", 95); // Key·중복불가 >> 중복이 있을 경우, 덮어쓰기 주의
System.out.println(map); // {배두훈=98, 조민규=96, 강형호=97, 고우림=95}
// 속성값 주의는 OK~~
// [2.2] .get(Key) : Map 객체 내에서 Key의 Value를 반환
System.out.println(map.get("고우림")); // 95
// [2.3] .size() : Map 객체내의 entry 개수를 반환
System.out.println(map.size()); // 4
// [2.4] .remove(key) : Map 객체 내의 Key에 해당하는 entry를 삭제
// map.remove("고우림");
// System.out.println(map); //{배두훈=98, 조민규=96, 강형호=97}
// [2.5] .containsKey( key ) : Key가 존재하면 true / 없으면 false
System.out.println(map.containsKey("배두훈")); // true
// [2.6] .containsValue( Value ) : Value가 존재하면 true / 없으면 false
System.out.println(map.containsValue(96)); // true
// [2.7] .clear() : 모든 entry를 삭제
// [2.8] .isEmpty() : Map객체 내에 entry가 없으면 true, 있으면 false
System.out.println(map.isEmpty()); // false
// [2.9] .entrySet() : Map 객체내 모든 entry를 set 인터페이스로 반환
System.out.println(map.entrySet()); // [배두훈=98, 조민규=96, 강형호=97]
// [2.10] .keySet() : Map 객체 내의 모든 key를 set 인터페이스로 반환
System.out.println(map.keySet()); // [배두훈, 조민규, 강형호]
// [2.11] .values() : 모든 Value를 List 인터페이스로 반환
System.out.println(map.values()); // [98, 96, 97]
// [3] Map과 반복문 관계
// [3.1] 일반 for
// index 없으므로 사용 X
// [3.2] 향상 For
for (String key : map.keySet()) {
System.out.println(key); // key를 출력
System.out.println(map.get(key)); // key에 해당하는 value 출력
}
// [3.3] forEach
map.keySet().forEach((key) ->
{
System.out.println(key);
System.out.println(map.get(key));
}
);
// [활용] JASON ( JS 객체 ) <---> MAP / DTO ( Java 객체 )
// DTO는 다회성 객체, Map은 1회성 객체 >> 개발자 스타일
} //main end
} // class end
| 구분 | List인터페이스 | Set인터페이스 | Map인터페이스 |
|---|---|---|---|
| 일반 for | O | X | X |
| 향상 for | O | O | O |
| forEach | O | O | O |
※ Set, Map 인터페이스는 index를 가지지 않으므로 일반 for문을 사용할 수 없음!!