Map
Set
과 같은 구조임 (중복 불가능) -> 단지 value
를 가지고 있냐 없냐의 차이HashMap
: 순서를 보장하지 않음LinkedHashMap
: 키를 기준으로 입력한 순서를 보장TreeMap
: 키의 데이터 값을 기준으로 정렬 // put(key, value) 메소드를 이용
// key : Object(기본) -> String으로 많이 사용, Interger 형
// value : Object(기본) -> Vo객체, String, Integer 등
map.put("bs", new Student("유병승",1,1,'남'));
map.put("jy", new Student("최주영",2,1,'남'));
map.put("nb", new Student("나빈",2,2,'여'));
map.put("sj", new Student("이성진",3,2,'여'));
Object o =map.get("sj"); // get 메소드는 Object형임
System.out.println(((Student)o).getName()); // 이성진 이름 출력하기
// 1. key값은 중복이 불가능하다
map.put("bs","바보"); // 중복할 경우 원래 있던 위치에 덮어쓰기 된다.
// 2. value 값은 중복이 가능하다.
map.put("bs2","바보");
System.out.println(map.get("bs")); // 바보
System.out.println(map.get("bs2")); // 바보
System.out.println(map.size());
map.remove("bs2"); // 키가 bs2인 것 삭제
System.out.println(map.size());
Object o = map.get("bs2");
System.out.println(o); // 해당 키값이 없을때는 null로 반환
// 해당 키값이 있으면 true로 반환
System.out.println(map.containsKey("jy")); // true
System.out.println(map.containsValue(new Student("최주영",2,1,'남')) ); // true
System.out.println(map.containsValue("유병승")); // false
ArrayList data = new ArrayList(map.values());
for(int i=0; i<data.size(); i++) {
System.out.println(data.get(i));
}
Set keys = map.keySet(); // key 값들을 Set 자료형으로 저장
Iterator it = keys.iterator(); // kety 값들로 iterator 메서드를 통해 객체로바꿈
while(it.hasNext()) {
Object key = it.next();
System.out.println(key+" "+map.get(key));
}
System.out.println("==for each로 출력==");
for(Object key : keys) {
System.out.println(key+" "+map.get(key));
}
Set entry = map.entrySet(); // key와 value 값을 Set 자료형으로 저장
Iterator it2 = entry.iterator(); // Iterator을 통해서 꺼내옴
while(it2.hasNext()) {
Map.Entry all =(Map.Entry)it2.next(); // Map.Entry 자료형으로 형변환
System.out.println(all.getKey()); //
System.out.println(all.getValue());
}
HashMap fruit = new HashMap();
fruit.put(1, new Fruit("귤","제주도",10,15000));
fruit.put(2, new Fruit("사과","예산",5,25000));
fruit.put(3, new Fruit("포도","영동",10,35000));
fruit.put(4, new Fruit("배","나주",10,50000));
System.out.println("===전체 데이터 조회===");
Set fruitKey = fruit.keySet(); // 키값들을 Set 자료형에 저장
for(Object key : fruitKey) { // key-> 1 2 3 4
System.out.println(key+" "+fruit.get(key));
}
System.out.println("가격이 20000원 이상인 과일만 key와 value 출력");
Set fruitEntry = fruit.entrySet(); // 키와 값들을 Set 자료형에 저장
Iterator fruitIt = fruitEntry.iterator(); // 그 키와값들을 하나씩 꺼내옴
while(fruitIt.hasNext()) {
Map.Entry all =(Map.Entry)fruitIt.next(); // all은 키와 값들을 접근할 수 있는 상태
Fruit temp = (Fruit)all.getValue(); // Fruit로 형변환해서 get 메소드에 접근함
if(temp.getPrice() >= 20000)
{
System.out.print("키 : " + all.getKey()+" 값 : "+all.getValue());
System.out.println();
}
}
// 이름이 한글자인 과일 key와 value 출력
for(Object o1 : fruitEntry) {
Map.Entry all = (Map.Entry)o1;
Fruit temp = (Fruit)all.getValue();
if(temp.getName().length() == 1) {
System.out.println(all.getKey()+" "+temp);
}
}
// 이름이 배인 과일 찾아서 삭제
Set fkeys = fruit.keySet(); // 키값 Set에다 저장해서
Iterator fit1 = fkeys.iterator(); // 키값을 하나씩 꺼냄
while(fit1.hasNext()) {
Integer ikey = (Integer)fit1.next();
if(((Fruit)fruit.get(ikey)).getName().equals("배")) {
fruit.remove(ikey);
}
}
// Map도 of메소드를 이용해서 불변의 데이터를 생성
// 값을 수정할 수 없으며, 키와 값 쌍으로 넣어줘야함!
Map data1 = Map.of("name","유병승","age",19,"gender",'M');
// data1.put("address","경기도 시흥시"); // 수정불가능
// data1.put("name","최주영"); // 수정불가능
ArrayList dataList = new ArrayList();
// 리스트안에 맵을 넣음
dataList.add(Map.of("name","유병승","age",19));
dataList.add(Map.of("name","정상준","age",26));
dataList.add(Map.of("name","윤지환","age",25));
dataList.add(Map.of("name","조장흠","age",26));
for(int i=0; i<dataList.size(); i++) {
System.out.println(((Map)dataList.get(i)).get("name"));
System.out.println(((Map)dataList.get(i)).get("age"));
}
Properties prop = new Properties();
//properties 객체에 값 저장하기
//put() 메소드를 이용한다.
prop.put("name","유병승");
prop.put("age", "19");
System.out.println(prop); // {name=유병승, age=19}
//setProperty() 메소드를 문자열을 저장할 때 사용
prop.setProperty("upserId","admin"); // 매개변수 둘 다 String임
prop.setProperty("password","1234");
System.out.println(prop); // {password=1234, name=유병승, upserId=admin, age=19}
// 파일과 연동해서 처리함
// 지정된 파일에 properties 객체에 저장된 내용을 저장시킬 수 있음
// 두번째 인자는 메모하는곳임 (공백이여도됨)
try {
// store(FileOutputStream)메소드 이용
// prop.store(new FileOutputStream("first.properties"), "first properites");
// storeToXML(FileOutputStream) 메소드 이용
prop.storeToXML(new FileOutputStream("first.xml"), ""); // 파일 생성
}
catch(IOException e) {
e.printStackTrace();
}
// 파일로 저장한 properties 내용 가져오기
Properties prop2 = new Properties();
System.out.println(prop2);
try {
// load(FileInputStream) 메소드 이용
prop2.load(new FileInputStream("first.properties"));
// loadFromXML(FileInputStream) 메소드 이용
prop.loadFromXML(new FileInputStream("mydata.xml"));
}catch(IOException e) {
e.printStackTrace();
}
System.out.println("불러온 후");
System.out.println(prop2);
// properties에 저장된 데이터 불러오기
// getProperty("key") 메소드 이용하여 불러오기 // 파일이라서 문자열임
System.out.println(prop2.getProperty("upserId"));
System.out.println(prop.getProperty("driver"));
try {
prop.load(new FileInputStream("dataaceess.properties"));
}catch(IOException e) {
e.printStackTrace();
}
String driver = prop.getProperty("driver");
System.out.println(driver);