import java.util.HashMap;
import java.util.Iterator;
public class HashMap_ex {
public static void main(String[] args) {
// 선언하고 초기화~
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(0,"str");
hashMap.put(1,"str1");
hashMap.put(2,"str2");
hashMap.put(3,"str3");
System.out.println(hashMap.toString());
// 지우기
hashMap.remove(2);
System.out.println(hashMap.toString());
// 데이터 모두 삭제
hashMap.clear();
System.out.println(hashMap.toString());
// 데이터 다시 넣기
hashMap.put(0,"str");
hashMap.put(1, "str2");
hashMap.put(2,"srt3");
System.out.println(hashMap.toString());
// key들만 모아서 HashMap으로부터 iterator(반복자) 메서드를 구하면 iterator객체를 구할 수 있음!
Iterator<Integer> iterator = hashMap.keySet().iterator();
// 다음 데이터(key)가 있냐?
// true 면 반복~
while(iterator.hasNext()){
// 구한 반복자의 다음 데이터를 구해조...
System.out.println(hashMap.get(iterator.next()));
}
}
}
결과
으깨다 라는 뜻! 해시 포테이토!!!!!!!!!! 으깬 감자!!!!!!!
데이터를 가리키고 있는 값을 정수화시키는 것 (-> 메모리 주소 값이 찍힘~)
- set계열 자료구조에서는 데이터의 순서는 없음 )출력시 순서 바뀜)
- 중복된 데이터는 허락하지 않음
- 메모리 주소 값이 다르니까 각 주소 비교해서 지워야 함!
import java.util.HashSet;
public class HashSet_ex {
public static void main(String[] args) {
HashSet<Student> hashSet = new HashSet<Student>();
hashSet.add(new Student("어피치", 3));
hashSet.add(new Student("라이언", 6));
hashSet.add(new Student("춘식이", 1));
// Student student = new Student("춘식이", 1);
// hashSet.remove(student);
System.out.println(hashSet.toString());
}
}
public class Student {
private String name;
private int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
@Override
public String toString() {
return name + " : " + grade;
}
}
결과
근데 춘식이를 지우고 싶네? 그러면
public class Student {
private String name;
private int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
@Override
public String toString() {
return name + " : " + grade;
}
@Override
public boolean equals(Object obj) {
String compareValue = obj.toString();
String thisValue = toString();
// 서로 같으면 true
return thisValue.equals(compareValue);
}
@Override
public int hashCode() {
return toString().hashCode();
}
}
import java.util.HashSet;
public class HashSet_ex {
public static void main(String[] args) {
HashSet<Student> hashSet = new HashSet<Student>();
hashSet.add(new Student("어피치", 3));
hashSet.add(new Student("라이언", 6));
hashSet.add(new Student("춘식이", 1));
Student student = new Student("춘식이", 1);
hashSet.remove(student);
System.out.println(hashSet.toString());
}
}
결과 : 춘식이를 지웠다!
- java에는 무수히 많은 자료구조형이 있음
- 많은 자료구조형이 존재하는 것은 결국 데이터를 잘 관리하기 위해서임
- 잘 관리한다는 것은 저장하고 정렬하고 검색하는 것 (이 중 데이터의 검색은 무엇보다 중요)
그래서 java에서는 Iterator라는 인터페이스가 있음!- Iterator라는 의미는 '반복자' 라는 의미로 데이터를 반복적으로 검색하는데 아주 유용한 인터페이스임
- 모든 자료구조형에는 iterator()메서드를 지원함