일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 컬렉션프레임워크
- Android
- ibatis
- 이클립스
- spring
- 생활코딩
- python
- Mac
- API
- crud
- JDBC
- Error
- Oracle
- 자바
- Homebrew
- 대덕인재개발원
- ddit
- 자바문제
- jsp
- nodejs
- 맥
- html
- FastAPI
- 객체지향
- servlet
- 배열
- pyqt
- 단축키
- Java
- 반복문
Archives
- Today
- Total
romworld
Map , Set 본문
Map
package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
/*
* Map객체 ==> key값과 value값을 한 쌍으로 관리하는 객체 - key값은 중복을 허용하지 않고 순서(index)가 없다.
* (Set의 특징을 갖는다.) - value값은 중복을 허용한다.
*/
HashMap<String, String> map = new HashMap<String, String>();
// 자료 추가 ==> put(key값 ,value값)
map.put("name", "홍길동");
map.put("addr", "대전");
map.put("tel", "010-1234-5678");
System.out.println("map => " + map);
// 자료 수정 ==> 데이터를 추가할 때 key값이 같으면 나중에 입력한 값이 저장된다.
map.put("addr", "서울");
System.out.println("map => " + map);
// 자료 삭제 ==> remove(key값) : key값이 같은 데이터를 찾아서 삭제한다.
// ==> 반환값 : 삭제된 데이터의 value값이 반환된다.
/*
* String removeTel = map.remove("tel"); System.out.println("map => " + map);
* System.out.println("삭제된 데이터 : " + removeTel);
*/
// 자료 읽기 ==> get(key값)
// ==> 해당 key값과 같이 저장된 value값이 반환된다.
System.out.println("이름 : " + map.get("name"));
System.out.println();
// key값의 존재 여부를 검사하는 메서드 : containsKey(key값)
// ==> 해당 key값이 있으면 true, 없으면 false
System.out.println("tel 키값의 존재 여부" + map.containsKey("tel"));
System.out.println("age 키값의 존재 여부" + map.containsKey("age"));
System.out.println();
System.out.println("--------------------------------");
// ----------------------------------------------------------------------
// Map에 저장된 모든 데이터를 읽어와 처리하기
// 방법1) 모든 key값을 읽어와서 처리하는 방법 ==> keySet()메서드 이용
// - keySet()메서드 ==> Map의 모든 key값을 읽어와 Set형으로 반환한다.
// 방법1-1) Iterator이용하기 --- 주로 많이 쓰이는 방법
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String key = it.next(); // 키값 가져오기
String value = map.get(key);
System.out.println(key + " : " + value);
}
System.out.println("--------------------------------");
// 방법1-2) 향상된 for문 이용하기 -- 주로 많이 쓰이는 방법
for (String key : map.keySet()) { // keySet 써줘도 됨 변수로 저장해놔서..
String value = map.get(key);
System.out.println(key + " : " + value);
}
System.out.println("---------------------------------");
// 방법2) 모든 value값만 읽어와 처리하는 방법
// ==> values()메서드를 이용한다.
for (String value : map.values()) {
System.out.println(value);
}
System.out.println("---------------------------------");
}
}
Set
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
public class SetTest {
public static void main(String[] args) {
/*
* - List와 Set의 차이점 1. List - 데이터의 순서(index)가 있다. - 중복되는 데이터를 저장할 수 있다.
*
* 2. Set - 데이터의 순서(index)가 없다. - 중복되는 데이터를 저장할 수 없다.
*/
HashSet hs1 = new HashSet();
// Set에 데이터를 추가하는 메서드 ==> add(추가할 데이터)
hs1.add("DD");
hs1.add("AA");
hs1.add(2);
hs1.add("CC");
hs1.add("BB");
hs1.add(1);
hs1.add(3);
System.out.println("Set의 개수 : " + hs1.size());
System.out.println("hs1 ==> " + hs1);
// Set에 중복되는 데이터를 추가하면 false를 반환하고 데이터는 추가되지 않는다.
boolean isAdd = hs1.add("FF");
System.out.println("데이터가 중복되지 않을 때 : " + isAdd); // 는 true가 나옴
System.out.println("hs1 ==> " + hs1);
System.out.println();
isAdd = hs1.add("CC");
System.out.println("데이터가 중복될 때 : " + isAdd);
System.out.println("hs1 ==> " + hs1);
System.out.println();
// Set의 데이터 수정하기
// ==> 수정하는 명령이 따로 없기 때문에 해당 자료를 삭제한 후에 추가하는 방식을 사용한다.
// 삭제하는 메서드 : remove(삭제할데이터) ==> 반환값 : 삭제성공(true), 삭제실패(false)
// clear() ==> 전체 자료 삭제
// 예) "FF"데이터를 "EE"로 변경하기
hs1.remove("FF");
System.out.println("삭제 후 hs1 ==> " + hs1);
hs1.add("EE");
System.out.println("hs1 ==> " + hs1);
System.out.println();
/*
* hs1.clear(); System.out.println("hs1 ==> " + hs1); System.out.println();
*/
/*
* - Set의 데이터는 순서(index)가 없기 때문에 List처럼 데이터를 하나씩 불러 올 수 없다. 그래서 데이터를 하나씩 얻기 위해서는
* Iterator형 객체로 변환해야 한다.
*
* - Set형의 데이터들을 Iterator형 객체로 변환하는 메서드 ==> iterator()
*/
Iterator it = hs1.iterator(); // Set형 데이터를 Iterator형으로 변환하기
// Iterator 객체의 hasNext()메서드
// ==> Iterator에서 데이터를 가르키는 포인터의 담음 번째에 있는지 검사한다.
// 데이터가 있으면 true, 없으면 false를 반환한다.
while (it.hasNext()) {
// Iterator객체의 next()메서드
// ==> Iterator의 포인트를 다음 번째 위치로 이동시킨 후 그 자리의 데이터를 반환한다.
System.out.println(it.next());
}
System.out.println("----------------------------------");
System.out.println();
// 향상된 for문 이용하기
for (Object data : hs1) {
System.out.println(data);
}
System.out.println("----------------------------------");
/*
* 우리반 학생들 중 번호를 이용하여 추첨하는 프로그램을 작성해 보자. 번호는 1번부터 25번까지 있고, 추첨할 인원은 3명이다 (단, 중복
* 추첨을 불가하다) 당첨자를 출력하시오
*/
HashSet<Integer> testSet = new HashSet<Integer>();
// 난수 만들기
// 최소값~최대값 사이의 정수형 난수 만들기
// (int)(Math.random() * (최대값 - 최소값 + 1) + 최소값)
// nextInt((최대값 - 최소값 + 1) ) + 최소값;
/*
* // ==> 35~40 사이의 난수 만들기 Random rnd = new Random(); for(int i =1; i<15; i++) {
* int data = rnd.nextInt((40-35+1)) + 35; //요즘 방식 //int data =
* (int)(Math.random() * (40-35+1) + 35); 옛날 방식 System.out.println(data); }
*/
while (testSet.size() < 3) { // (중복된 걸 안나오게 하려면 while) 세개가 차면 반복문이 끝남 (인원 3명이니까)
int data = (int) (Math.random() * (25 - 1 + 1) + 1);
testSet.add(data);
}
System.out.println("당첨자 번호 : " + testSet);
System.out.println();
// Set유형의 자료를 List형으로 변환하기
ArrayList<Integer> testList = new ArrayList<Integer>(testSet);
System.out.println("List 데이터 출력");
for (int i = 0; i < testList.size(); i++) {
System.out.println(testList.get(i));
}
}
}
'JAVA > 개념정리' 카테고리의 다른 글
Args (0) | 2022.10.28 |
---|---|
Properties (0) | 2022.10.28 |
Equals, HashCode (0) | 2022.10.28 |
ArrayList (0) | 2022.10.28 |
정렬(Comparable, Comparator) (0) | 2022.10.28 |
Comments