HAyooni
YOON
HAyooni
전체 방문자
오늘
어제
  • 분류 전체보기 (70)
    • Oracle DB (12)
      • ERD (0)
      • orcle sql (12)
    • front-end (8)
      • HTML (3)
      • CSS (5)
      • Javascript (0)
    • back-end (24)
      • JAVA (15)
      • JDBC (4)
      • Servlet + jsp (1)
      • myBatis (0)
      • Spring framework (4)
    • ERROR (8)
      • error note (8)
    • 과제 (0)
      • 문제풀이 (0)
    • 알고리즘 문제 (6)
      • programmers (6)
    • 자격증 (0)
      • 정보처리기사 (0)
    • 프로젝트 (12)
      • team-project (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • HTML기본
  • spring
  • css선택자
  • SQL
  • 자바
  • IAMPORT
  • 결제환불시스템
  • dowhile
  • 프로그래머스
  • project
  • 하샤드수
  • java
  • 알고리즘
  • oracle
  • CSS
  • HTML
  • FinalProject
  • db
  • 직사각형별찍기
  • jdbc

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HAyooni

YOON

back-end/JAVA

[수업-java] 13. Collection

2022. 8. 6. 18:05

1. Collection

객체를 그룹 단위의 데이터로 저장하는 기본적인 자료구조들의 모음

 

2. 배열과 컬렉션의 비교

배열
컬렉션
크기 변경 불가
저장 크기 제약 없음
한 타입의 데이터만 저장
* 예외 object[] obArr = new Object[3];
여러 타입의 데이터 저장
추가/삭제/정렬 불편
추가/삭제/정렬 간단

 

3. 컬렉션 프레임워크 종류

인터페이스
특징
Collection
List
저장 순서 유지
중복 저장 가능 ( 크기 제약x)
Set
저장 순서 유지 불가능
중복 저장 불가능
*index가 없다.
Map
키와 값을 쌍으로 저장
키는 중복 저장 불가능 (저장순서x)
(값은 중복 저장 가능)

<E> : 제네릭으로 타입을 제한한다. (타입확인을 하기 위함)

 

4. List 기능

 

a. add(E e) : 리스트 끝에다가 지정요소를 추가한다.

b. add(index, E e) : 원하는 index에 지정요소 추가

c. remove(int index) : 원하는 index에 있는 값 삭제

d. set(int index, Student element) : 해당 인덱스 값에 지정요소 대체

e. get(int indxt) : 해당 인덱스에 있는 값 가져오기

f. contains(Object o) : 리스트에 해당 객체의 존재유무에 따라 false / true

g. clear() : 모든 객체 삭제

ArrayList<Student> list = new ArrayList<Student>(3/*수용량지정가능*/);
		
		list.add(new Student("테스트", 0));
		list.add(new Student("도대담", 60));
		list.add(new Student("남나눔", 90));
//		list.add("하이"); > 제네릭을 통하여  Student만 받을 수 있도록 타입을 제한했기때문에 불가
 

**수용량 지정은 가능하지만 List는 크기에 제약이 없기 때문에 수용량 보다 많은 값이 담긴다.

		list.add(0, new Student("류라라", 100));
		System.out.println("list : " + list);
 
	//remove(int index) : E
		Student s = list.remove(1);
		System.out.println(s);
		System.out.println("list : " + list);
		
		//remove(Object o) : boolean
	    list.remove(new Student("류라라", 100));
		System.out.println("list : " + list);
 
		list.set(3, new Student("박보배", 85 ));
		System.out.println("list : " + list);
 
		Student s2 = list.get(2);
		System.out.println(s2);
 

** remove(new 객체) 불가능 -> 주소 값 다름 -> equals, hashcode 오버라이딩 -> remove(new 객체) 가능

 

4. Set 기능

 

a. add(E e) : boolean Set의 경우에는 index가 존재하지 않기 때문에 자리를 지정해서 추가하는 메소드는 사용 불가

b. LinkedHashSet : 순서는 유지되고 중복저장이 안되는 컬렉션

c. TreeSet : 정렬

정렬을 위해서는 comparable이나 comparater가 있어야한다. String클래스는 Comparable 인터페이스(compareTo())가

이미 구현되어있기 때문에 정렬 기준이 정해져있고 정렬 기준이 정해져있는 String클래스가 TreeSet안에 들어가 있기 때문에 정렬 가능

d. Iterator() : 컬렉션에 저장된 element에 접근 할 수 있도록 한다. (한 번 읽어왔으면 더 이상 읽어올 값이 없기 때문에 한 번만 사용가능하다. )

e. hasNext() : boolean 다음 값이 있으면 true반환, 없으면 false 반환

		HashSet<Dog> set = new HashSet<>(); 
		
		//add(E e) : boolean
		set.add(new Dog("해피", 6.8));
		set.add(new Dog("뚱이", 3.3));
		set.add(new Dog("밍키", 5.4));
		System.out.println("set : " + set); // 순서 유지 x
		
		set.add(new Dog("해피", 6.8)); //위에 있는 해피와는 주소값이 달라서 중복값으로 처리되지 않음
		System.out.println("set : " + set); // 중복 저장 x
		
	} 
 

 

 

6. Map

Map< K , V >

Key 값은 equals()오버라이딩 되어있어야 중복객체 확인이 가능하다. 그렇기 때문에 키 타입은 주로 equals()와 hashcode()가 이미 오버라이딩 되어 있는 객체를 주로 이용한다. (String, Integer ...)

 

a. Map에 값 집어넣기 put(K key, V valus) : V

b. containsKey(Object Key) : boolean 해당 키가 존재하고 있는지 확인

containsValue(object value) : boolean 해당 값이 존재하고 있는지 확인

c. get(Object key) : V

d. keySet() : Set<K> : map에 있는 key 들을 set에 담아 반환

e. entrySet() : Set<Map.Entry<K,V>> : entry : 키와 값 / map에 있는 entry들을 set에 담아 반환

f. TreeMap : key를 기준으로 정렬해주는 map

g. getProperty(String key, String defaultValue) : key와 value를 String으로 제한

key 값이 존재하면 그 key 에 해당하는 value 값을 반환

key 값이 존재하지 않으면 defaultValue 반환


HashMap<String, Snack> map = new HashMap<>();

// hashMap 객체 생성 (키는 String 객체, 값은 Snack 객체가 들어갈 수 있는)


map.put("새우깡",new Snack("짠맛", 1500));

map.put("다이제",new Snack("단맛", 2500));

map.put("포테이토칩",new Snack("짠맛", 1500));

map.put("고소미", new Snack("고소한 맛", 1000));

System.out.println("map: " + map);


System.out.println(map.put("새우깡", new Snack("매운맛", 1500)));

System.out.println("map: " + map);

 

7. comparable 정렬기준 1개

comparator 그 외 추가 정렬기준

String의 경우에는 이미 comparable을 오버라이딩 하고 있기 때문에 정렬기준을 세울 때 comparator로 진행한다.

 

 

8. equals() / hachcode() 오버라이딩

클래스 비교는 그대로이고 내용비교만 해당 모델의 변수의 타입과 개수에 따라 달라진다.

@Override
	public boolean equals(Object obj) {
		//클래스 먼저 비교
		if(this == obj) {
			return true;
		}
		if(obj == null) {
			return false;
		}
		//클래스 정보 비교
		if(getClass() != obj.getClass()) {
			return false;
		}
		
		//내용비교
		Music other = (Music)obj;
		if(title == null) {
			if(other.title != null) {
				return false;
			}
		} else if(!title.equals(other.title)) {
			return false;
		}
		if(singer == null) {
			if(other.singer != null); {
				return false;
		}
		}else if(!singer.equals(other.singer)) {
			return false;
		}
		
		return true;
		
	}
	
	@Override
	public int hashCode() {
		final int PRIME = 31;
		int result = 1;
		
		result = PRIME * result + (title == null? 0 : title.hashCode());
		result = PRIME * result + (singer == null? 0 : singer.hashCode());
		
		
		return result;
	}
	
 

 

 

저작자표시 (새창열림)

'back-end > JAVA' 카테고리의 다른 글

[수업-java] 14. 네트워크  (0) 2022.08.06
[수업-java] 12. IO  (0) 2022.08.06
[수업-java] 11. Exception  (0) 2022.08.06
[수업-java] 10. API  (0) 2022.08.06
[수업-java] 09. 상속  (0) 2022.08.06
    'back-end/JAVA' 카테고리의 다른 글
    • [수업-java] 14. 네트워크
    • [수업-java] 12. IO
    • [수업-java] 11. Exception
    • [수업-java] 10. API
    HAyooni
    HAyooni
    코린이의 티스토리 탐색기 기존 블로그(https://blog.naver.com/hha6571)에서 이사중입니다.

    티스토리툴바