로또 궁금한 점
1. Integer[]로 밀고 나간 것
2. Scanenr scan 멤버변수로 두기 - 어차피 Scanner 클래스의 메서드는 객체 생성해서 만들어야 하니까, 계속 쓸 거라면 멤버변수 만들어두고 (아니면 아예 생성까지 해서) 계속 쓸 수 있음
3. Arrays.copyOfRange() : 배열과 범위를 지정하고 복사해옴
4.
List<Integer> goalList = new Vector<Integer>(
Arrays.asList(excBonus)
);
- Collection에서 equals는 필수
Collection에 새로 만든 클래스를 원소로 사용할 때는 반드시 equals를 오버라이딩해야 한다.
(ex) remove(Object o), ~~)- Hash-가 붙는 클래스에서 hashCode는 필수
Hash-가 붙는 클래스를 사용할 때는 반드시 hashCode()를 오버라이딩해야 한다.
- 지도의 목적 : 위치 찾기
- 위치 찾기 위해서 필요한 것은 '지명(이름)'
equals()
뿐 아니라 hashCode()
또한 오버라이딩해야 한다.import java.util.*;
class MapEx1 {
public static void main(String[] args) {
Hashtable<String, String> table = new Hashtable<String, String>();
table.put("아이유", "010-1234-5678");
table.put("윤아", "010-9876-5432");
table.put("김유정", "010-1357-9246");
table.put("김혜수", "010-2468-1357");
System.out.println(table.size());
String tel = table.get("김우정"); // null
System.out.println(tel);
table.put("김혜수", "010-0000-0000");
System.out.println(table);
}
}
containsKey(<K> key)
사용get(<K> key)
했을 때 null이 나오는지 아닌지로도 확인 가능put(<K> key, <V> value)
: (key, value)를 추가containsKey(<K> key)
: 해당 'key'가 Map 안에 존재하는지 확인containsKey(<V> value)
: 해당 'value'가 Map 안에 존재하는지 확인clear()
: 모든 원소 삭제 (비우기)keySet()
: 모든 key 가져오기 (return : Set)values()
: 모든 value 가져오기 (return : Collection)Hash
'Hash'가 붙는다는 것은 'Hashing'을 사용한다는 것이다.hashing
검색속도를 높이기 위한 방법 중 하나.
hash함수를 이용하여 데이터를 소그룹으로 분류한 후, 값을 검색할 때 해당하는 소그룹을 찾아 그룹 내부 데이터와 값을 비교한다.
hashCode() : int
: 객체의 hashCode값을 리턴하는 메서드 (from Object)- object의 hashCode는 기본적으로 Object의 주소값(10진수 형태)
- toString으로 객체를 출력하면 기본값은
객체@주소
이다. (주소는 16진수)
이 주소는 hashCode()를 오버라이딩하면 (그래서 return값이 변경되면) 따라 변경된다.
변하지 않는 고유한 주소값을 알고싶다면System.identityHashCode()
를 사용한다.
(System.identityHashCode()
: 객체의 고유한 hashcode를 리턴하는 메소드)
String의 hashCode()는 고유한 값을 반환하는가? 참고