※ HashSet
public interface Set<E> extends Collection<E> - <E>는 제네릭스를 의미함
=> set은 Collection 의 자식이다
- HashSet : Set<E> 인터페이스를 구현하는 컬렉션 클래스
- 순서 유지하지 않는다
- 중복 저장 허용하지 않는다
▷ HashSet 생성하기
HashSet<String> hset = new HashSet<String>();
▷ HashSet 값넣기
- add 사용
hset.add("first");
▷ 값읽어오기
- iterator 사용 ( Vector 도 사용방법동일하다. Iterator 의 구버전이기 때문에 ! )
Iterator<String>iter = hset.iterator();
while(iter.hasNext()) {
String s = iter.next();
System.out.println(s);
}
첫째줄부터 코드해석해보자면
iterator() 메서드로 Iterator 인터페이스 가져오기 (= hashset에 들어있는걸 Iterator 에 담는다고 생각하면 됨)
hasNext() 왈 : 다음요소있어 ? 있는(ture)동안 반복문 계속돌려 ~
- boolean hasNext(): 읽어올 요소가 남아있는지 확인함. 있으면 true, 없으면 false
next() 왈 : 있네 ! 어 가져와 ~
- Object next(): 다음 요소를 읽어옴
Iterator 란 ?
- 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스
- set 에는 순서가 없으니 for문을 이용해 값을 출력할 수 없다. 따라서 Iterator 를 이용한다 !
비고 : ArrayList 도 Iterator 가 있긴한데 굳이 쓸필요는 없다
ArrayList 는 그냥 for 쓰면된다
어쨋든 가능하긴 하다 !
▽HashSet 값추가, 값삭제, 크기구하기, 데이터출력하기, 검색하기
https://crazykim2.tistory.com/474
※ HashMap
- 키와 값을 한쌍으로 해서 저장하는 자료구조
- 순서유지되지않는다
- 키는 중복허용 안되고, 값은 중복허용
▷ HashMap 생성하기
HashMap<Integer,String>map = new HashMap<Integer,String>();
▷ HashMap 값넣기
map.put(7, "홍길동");
▷ 특정값꺼내기
- 값 = 키() 형식으로 값을 꺼내오면 됨 !
String s = map.get(7);
System.out.println("7번 키의 값:"+s);
- key값 7의 value얻기
▷ 특정값지우기
map.remove(9);
- 9번키의 값이 지워진거임
▷ 값 읽어오기 - (1.Iterator 이용)
- HashMap도 HashSet 과 같이 순서가 없기때문에 Iterator 이용한다 !
Iterator<Integer> iter=map.keySet().iterator();
while(iter.hasNext()) {
int key=iter.next();
String val=map.get(key);
System.out.println("key="+key+", value="+ val);
}
특정 key값의 value를 가져오고싶다면 get(key)를 사용
전체를 출력하려면 entrySet()이나 keySet()메소드를 활용하여 Map의 객체를 반환받은 후 출력하면 됩니다.
▷ 값 읽어오기 - (2. for문에서 키 이용)
- 다시한번말하지만 map 은 순서가 없다.
for문은 인덱스 값을 이용하는 것이 아니라 key 값을 넣어 value 를 출력하는 것이다.
for(int i = 0; i < map2.size(); i++){
System.out.print(map2.get(i) +" ");
}
※ArrayList를 매개변수로 넣은 메서드를 만들어보자
악마다 악마 ArrayList 버거운데 이걸 매개변수 넣어서 메서드를 만들어 ? 차암나 .. 앙.마.
▷ 메서드 만들기
public void findSum(ArrayList<Integer>subject) {
sum=0;
for(int i=0;i<subject.size();i++) {
int n=subject.get(i);
sum+=n;
}
- ArrayList 안에 들어있는 값을 모두 더하는 메서드임
▶ 만든메서드 main()에서 사용해보기
▷ ArrayList 만들어서 안에 값 넣기
( 배열 값 더하기 메서드를 사용해야하니까
더할 것들을 만들어주는 작업 )
ArrayList<Integer> list = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
System.out.println("국,영,수 점수 입력!");
for(int i=0;i<3;i++) {
list.add(sc.nextInt());
}
▷ 메서드 호출해서 사용하기
s.findSum(list);
= 이렇게 하면 list 안에있는 값들이 모두 더해져서 sum 변수에 입력된상태 !
return void 로 설정했기 때문에 println으로 호출해줘야 출력이 가능하다
▽이렇게 !
System.out.println("총점 : "+ s.getSum()");
※ Properties 클래스
- HashMap의 구버전인 Hashtable을 상속받아 구현한 것
ㄴ 키와 값을 (Object, Object)의 형태로 저장
- (String, String)의 형태로 저장 > Hashtable 보다 간단 !
- 주로 어플리케이션의 환경설정과 관련된 속성을 저장하는 데 사용
데이터를 파일로부터 읽고 쓰는 기능 제공
- 코드를 건들이지 않고도 정보를 변경할 수 있다는 강점이 있다.
▶ Properties 사용해서 값 읽어오기 (기본)
Properties prop = new Properties();
prop.setProperty("size", "10");
String size = prop.getProperty("size");
System.out.println("size="+size); // size = 10
= > getProperty() 메서드에 '키' 를 넣으면 '값' 이 도출된다
- 근데 이 방법 보다는 아래 방법이 더 자주쓰여 중요하다.
▶ Properties 사용해서 값 읽어오기 (★★★★★)
Properties prop = new Properties();
InputStream is;
try {
is = new FileInputStream("text/input.txt");
prop.load(is); //파일에 있는 데이터를 Properties 컬렉션에 저장
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String name=prop.getProperty("name");
String data=prop.getProperty("data");
System.out.println("name="+name);
System.out.println("data="+data);
진짜 모르겠다 일단 외우자 !!!
- 파일을 직접 여는 클래스가 아니므로 FileReader 또는 FileInputStream 객체를 매개변수로 받음
- load() 메소드를 통해 파일 정보를 넣어줌
'JAVA' 카테고리의 다른 글
[JAVA] 형식화클래스 / Math 클래스의 메서드 / StringBuffer / StringTokenizer / 연산자 == (0) | 2022.03.15 |
---|---|
[JAVA] TreeSet / String , Calendar, Date 클래스의 메서드 (0) | 2022.03.13 |
[JAVA] throw / throws 떠넘기기 / 컬렉션 / ArrayList / 제네릭스 (0) | 2022.03.08 |
[JAVA] 클래스로 return 하기 / 배열로 return 하기 / 예외 try~catch / 다중catch (0) | 2022.03.07 |
[JAVA] 추상클래스 / 추상메서드 / 인터페이스 Interface (0) | 2022.03.05 |