JUST GO
[공통] 자료구조 본문
자료 구조
- 자료 구조(Data Structure)는 자바에서 데이터를 보다 쉽게 이용할 수 있게 하기 위해 만들어졌다.
- 자료 구조의 구조
- Collection(java.util.Collection<E>)
- List(java.util.List<E>)
- 비정적 메서드
- add(E e) : E 타입의 객체 e를 List 에 추가한다. (현재 리스트(배열)의 크기는 자동으로 늘어난다.)
- contains(E e) : 원소 중 전달 받은 e 객체와 동일한(equals) 객체를 가지고 있는지의 여부를 반환한다.
- get(int i) : i 번째 객체를 반환한다.
- indexOf(E e) : List가 가진 원소 중 전달된 매개 변수 e와 equals 인 원소의 순번(인덱스)을 반환한다. 없다면, -1을 반환한다.
- remove(int i) : i 번째 객체를 List 에서 제거한다.(삭제 후 리스트(배열)의 크기는 자동으로 줄어든다.)
- remove(E e) : List 에서 전달 받은 e 객체에 대해 equals(...) 호출 결과가 true인 원소를 제거한다.(삭제 후 리스트(배열)의 크기는 자동으로 줄어든다.)
- size() : 원소의 개수를 반환한다.
- ArrayList(java.util.ArrayList<E>)
- ArrayList<E> 는 E타입의 객체를 그 원소로 가진다.
- (일반 배열 처럼) 순번(인덱스 번호)으로 데이터에 접근한다.
- 일반 배열과 달리 데이터 조회, 추가 및 삭제가 용이해 많이 사용한다.
- 데이터 조회(접근)는 다른 List 보다 빠르지만, 데이터 추가 및 삭제는 느린편이다.
- 비정적 메서드
- List(java.util.List<E>)
- Map(java.util.Map<K, V>)
- 비정적 메서드
- clear() : 가지고 있는 모든 키-값 쌍을 제거한다.
- containsKey(K k) : 원소중 전달된 k 타입의 객체 k를 키로 가지는 원소가 있는가의 여부를 반환한다.
- containsValue(V v) : 원소 중 전달된 V 타입의 객체 v를 값으로 가지는 원소가 있는가의 여부를 반환한다.
- get(K k) : K 타입의 키 객체 k 를 키로 가지는 원소의 V 타입 값 객체를 반환한다.
- keySet() : 가지고 있는 모든 키-값 쌍의 키(들)에 대한 Set<K> 객체를 반환한다.
- put(K k, V v) : K 타입의 키 객체 k 에 대한 V 타입의 값 객체 v 의 쌍을 추가한다.
- remove(K k) : 원소인 키-값쌍 중 키가 k 타입의 k 객체와 같은(hashCode() 로 판단) 원소를 제거한다.
- size() : 가지고 있는 모든 키-값 쌍의 개수를 반환한다. 단, 키와 값 쌍 하나를 한개로 판단함으로 유의한다.
- values() : 가지고 있는 모든 키-값 쌍의 값(들) 에 대한 Collection<v> 객체를 반환한다.
- HashMap(java.util.HashMap<K, V>)
- HashMap<K, V>는 K 타입의 객체인 키(Key)와, V 타입의 객체인 값(Value)의 쌍을 원소로 가진다.
- 각 '키-값 쌍'은 인덱스 번호로 접근할 수 없다.
- 어떠한 값에 접근하기 위해서는 키가 필요하다.
- hashCode() 호출 결과가 동일한 같은 타입의 객체를 키로 가지는 원소가 여러개 존재할 수 없다.
- 비정적 메서드
public static void main(String[] args) throws Throwable {
HashMap<String, Integer> scores = new HashMap<>();
scores.put("김김김", 87);
scores.put("이이이", 66);
scores.put("박박박", 105);
int scoreOfPark = scores.get("박박박");
System.out.println("박박박 : " + scoreOfPark);
}
HashMap 예제
public static void main(String[] args) throws Exception {
HashMap<String, Integer> scores = new HashMap<>(); // 객체화 된 HashMap
scores.put("김김김", 87);
scores.put("이이이", 66);
scores.put("박박박", 105);
/**
* 박박박의 점수 구해보기
*/
// 고급
scores.forEach((k, v) -> System.out.println( String.format("%s은(는) %d점.", k, v)));
System.out.println("-".repeat(100));
// 초급
Set<String> names = scores.keySet();
for (String name : names){
System.out.println( String.format("%s은(는) %d점.", name, scores.get(name)));
}
}
// 이이이은(는) 100점.
// 김김김은(는) 87점.
// 박박박은(는) 105점.
public static void main(String[] args) throws Exception {
HashMap<String, Integer> scores = new HashMap<>(); // 객체화 된 HashMap
scores.put("김김김", 87);
scores.put("이이이", 66);
scores.put("박박박", 105);
/**
* 평균점수 구하기
*/
// 고급
System.out.println("평균 : " + scores.values().stream().mapToInt(x -> x).average().orElse(0D));
System.out.println("-".repeat(100));
// 초급
double scoreSum = 0D;
Collection<Integer> scoreValues = scores.values();
for(Integer scoreValue : scoreValues){
scoreSum += scoreValue;
}
System.out.println("평균 : " + scoreSum / scoreValues.size());
}
public static void main(String[] args) throws Exception {
HashMap<String, Integer> scores = new HashMap<>(); // 객체화 된 HashMap
scores.put("김김김", 87);
scores.put("이이이", 66);
scores.put("박박박", 105);
int scoreOfPark = scores.get("박박박");
System.out.println("박박박 : " + scoreOfPark);
System.out.println(scores.containsKey("박박박"));
scores.remove("박박박");
System.out.println(scores.containsKey("박박박"));
}
/*
let scores = {
김김김 : 87,
이이이 : 66,
박박박 : 105
};
*/
'Java > 학습내용' 카테고리의 다른 글
[클래스] Math (0) | 2022.10.19 |
---|---|
[클래스] String (0) | 2022.10.19 |
[공통] 구현 (0) | 2022.10.14 |
[공통] 다형성 (0) | 2022.10.13 |
[공통] 상속 (0) | 2022.10.13 |