JUST GO

[공통] 자료구조 본문

Java/학습내용

[공통] 자료구조

root_go 2022. 10. 19. 13:43

자료 구조

  • 자료 구조(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 보다 빠르지만, 데이터 추가 및 삭제는 느린편이다.
  • 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