Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 간단한 CRUD 구현
- 회고
- 국비
- 회고록
- 국비 회고
- 유동아이피를 고정하는 방법
- crud게시판
- 국비지원
- 파이널 프로젝트
- CRUD 게시판
- 간단한 CRUD구현
- 게시판
- 잡다한 노트
- 국비지원 후기
- jsp
- 데이터를 못 읽어오는 경우
- jQuery
- Oracle 유동IP
- mariadb 접속오류
- 취업 후기
- 국비 과정
- 아날로그 시계만들기
- CRUD 구현
- 국비과정
- mariadb 서버 기본값 설정
- 팝업 생성
- 웹 크롤러
- 생년월일 팝업 생성
- Oracle 유동아이피
- 간단한 CRUD 게시판
Archives
- Today
- Total
우당탕탕 개발 블로그 도전기
[Java] collection framework의 특정한 문자열을 key로 지정하기 본문
문제) HashSet 객체의 command 변수에 할당된 문자열에서 '=' 문자를 기준으로 문자열을 분리하여 앞의 문자열은 key, 뒤의 문자열은 value로 지정하라.
각각의 key, value 값은 HashMap 객체의 hm 변수에 저장한다.
(HashMap 객체는 기본적으로 key와 value를 한 쌍으로 해서 데이터를 저장하는 컬렉션이다.)
1. 자바의 split() 메서드를 이용해서 나누는 방법
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class Test02_SetMap {
public static void main(String[] args) {
//HaseSet 객체의 변수 command를 선언, HashSet 기본적으로 중복값을 허용하지 않는다.
HashSet command = new HashSet();
//command 변수에 add를 이용해 문자열 데이터를 추가
command.add("list.do=net.bbs.List");// 첫번째 데이터
command.add("read.do=net.bbs.read");// 두번째 데이터
command.add("write.do=net.bbs.Write");//세번째 데이터
//HashMap 객체의 변수 hm을 생성, HashMap의 경우 key와 value를 한 쌍으로 데이터를 저장하는 컬렉션이다.
HashMap hm = new HashMap();
//HaseSet 객체의 요소를 가르키는 cursor를 생성
//iterator를 가져와서 command HashSet의 값을 iter 변수에 할당함
Iterator iter = command.iterator();
//iterator의 다음 요소가 있을 때까지 while루프를 반복
while(iter.hasNext()) {
//iterator의 요소를 String cmd에 변수에 할당함
String cmd = (String) iter.next();
//split을 이용해서 '='를 기준으로 key와 value를 나눈다
String[] parts = cmd.split("=");
//나뉜 key와 value의 값을 각각 parts[] 배열의 [0]인덱스, [1]인덱스에 집어넣음.
hm.put(parts[0], parts[1]);
//결과적으로 '='문자를 기준으로 나뉜 "read.do"를 key로 호출시 "net.bbs.read"가 출력
System.out.println(hm.get("read.do"));
}
}
}
2. substring()을 이용한 방법
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class Test02_SetMap {
public static void main(String[] args) {
HashSet command = new HashSet();
command.add("list.do=net.bbs.List");
command.add("read.do=net.bbs.read");
command.add("write.do=net.bbs.Write");
HashMap hm = new HashMap();
Iterator iter = command.iterator();
while(iter.hasNext()) {
String cmd = (String) iter2.next(); //20행 까지는 이전의 코드와 동일
//'=' 문자를 기준으로 문자열을 분리하기 때문에 해당하는 '='의 위치부터 찾음
//그리고 해당하는 '=' 인덱스 값을 변수 index에 저장함.
int index = cmd.indexOf("=");
//문자열의 시작인 [0]인덱스 부터 '='전까지의 인덱스값을 String 변수 key에 저장
String key = cmd.tosubstring(0,index);
//'='이후의 인덱스부터 나머지의 문자열을 전부 value의 값으로 저장한다.
String value = cmd.tosubstring(indx+1);
//저장된 각각의 key값과 value의 값을 hm변수에 저장함.
hm.put(key, value);
}
//이전 코드와 같은 결과값인 "net.bbs.read"가 출력
System.out.println(hm.get("read.do"));
}
}
3) 번외.. generic을 이용한 문제 풀이
import java.util.HashMap;
import java.util.HashSet;
public class Test02_SetMap {
public static void main(String[] args) {
HashSet command = new HashSet();
/*
command.add("list.do=net.bbs.List");
command.add("read.do=net.bbs.read");
command.add("write.do=net.bbs.Write");
*/
//각각의 저장할 문자열들을 배열에 지정한다.
String[] commands2 = {
"list.do=net.bbs.List",
"read.do=net.bbs.read",
"write.do=net.bbs.Write"
};
//새로운 HashMap객체를 생성하는데 <>연산자를 이용해 타입추론이 가능한 추론형으로 생성한다.
//'<>' 연산자를 이용해 변수선언에서 제공된 타입 매개변수(String,String)을 참조하여 new 키워드 뒤의 생성자 호출에서
//타입 매개변수를 자동으로 추론한다. 결과적으로 변수 'hm'은 문자열 키값과 값을 갖는 HashMap 객체를 참조함.
HashMap<String, String> hm = new HashMap<>();//new HashMap()에는 String 문자열 값만 올 수 있다.
//문자열 cmd는 commands2라는 배열의 값을 가진다.
for(String cmd : commands2) {
//'=' 문자를 기준으로 문자열을 분리함
int index = cmd.indexOf("="); //해당하는 '='의 위치를 찾는다.
String key = cmd.substring(0,index);//문자열의 시작 인덱스[0] 문자 '=' 전까지의 값을 key로 지정함
String value = cmd.substring(index+1);//'=' 문자의 이후부터 남은 인덱스의 문자열 전체를 value로 지정한다.
hm.put(key,value);//추출한 각각의 key와 value의 값을 HashMap에 저장한다.
System.out.println(hm.get("read.do"));
}
}
'Java' 카테고리의 다른 글
[Java] Jsoup 라이브러리를 이용한 웹 크롤링 (1) | 2024.04.01 |
---|---|
[Java] JDBC를 이용해 Java에 Oracle Database 연동하기 (0) | 2024.03.28 |
Calendar 클래스를 이용해 주민번호를 통해 나이 구하기 (0) | 2024.03.24 |
[Java] 상속과 Override (1) | 2024.03.23 |
[Java] 생성자 함수와 'this' (1) | 2024.03.23 |