본문 바로가기
개발 공부 Today I Learned

[국비 24일차 TIL] Collection, List, Set, Map

by 개발자신입 2023. 12. 22.
반응형

< 컬렉션 >

컬렉션 하위에 존재 : List, Set

 

* List : 순서 있음. 중복 가능.

* Set : 순서 없음. 중복 불가.

* Map : Key,Value 형식으로 저장함. (= 딕셔너리 dic)

 

List

new ArrayList<>();

list.add();

 

lastIndexOf : 문자열에서 탐색하는 문자열이 마지막으로 등장하는 위치에 대한 index를 반환

lastIndexOf(searchValue[,fromIndex])

 

package coll; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class List01 { public static void main(String[] args) { ‌‌ ‌‌// 부모 // 자식 ‌‌List<String> list = new ArrayList<String>(); ‌‌ ‌‌list.add("홍길동"); ‌‌list.add("김길동"); ‌‌list.add("이길동"); ‌‌list.add("박길동"); ‌‌list.add("홍길동"); ‌‌ ‌‌System.out.println(list.size()); // 5 ‌‌System.out.println(list.get(0)); ‌‌System.out.println(list.get(list.size()-1)); ‌‌System.out.println("======================="); ‌‌ ‌‌for (int i = 0; i < list.size(); i++) { ‌‌‌System.out.println(list.get(i)); ‌‌ ‌‌System.out.println("======================="); ‌‌} ‌‌for (String string : list) { ‌‌‌System.out.println(string); ‌‌} ‌‌ ‌‌list.add(1, "황길동"); // 1번지에 황길동 추가 (나머지는 뒤로 밀림) ‌‌System.out.println(list); ‌‌ ‌‌// 새로운 컬렉션 ‌‌ ‌‌List<String> list2 = new ArrayList<String>(); ‌‌list2.add("david"); ‌‌list2.add("clara"); ‌‌list2.add("rosey"); ‌‌ ‌‌// 두 개의 list를 하나로 합치기 ‌‌list.addAll(list2); // list에 list2 더하기 ‌‌System.out.println(list); ‌‌ ‌‌boolean in =list.contains("당근"); ‌‌System.out.println(in); ‌‌ ‌‌System.out.println(list.lastIndexOf("david")); // 6 ‌‌System.out.println(list.lastIndexOf("홍길동")); // 5 ‌‌System.out.println(list.indexOf("홍길동")); // 0 ‌‌ ‌‌Object listtoArr[]= list.toArray(); ‌‌System.out.println(Arrays.toString(listtoArr)); ‌‌List<String> subList = list.subList(3,5); ‌‌System.out.println(subList); ‌‌ } }

 

 

< Set >

Set : 순서 없음, 중복 없음

 

HashSet : 무작위

TreeSet : 크기 순서대로 저장

LinkedSet : 뽑힌 순서대로 저장

 

hasNext()

Java에서 반복자(iterator)를 사용할 때, 다음 요소가 존재하는지 여부를 확인하는 메서드입니다. 주로 반복문과 함께 사용되어 다음 요소가 있는지 먼저 확인한 후에 해당 요소에 접근하는 용도로 활용됩니다.

package coll; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Set01 { public static void main(String[] args) { ‌‌ ‌‌// 순서 없음. 중복 없음. ‌‌Set<String> set = new HashSet<String>(); ‌‌set.add("홍길동"); ‌‌set.add("김길동"); ‌‌set.add("이길동"); ‌‌set.add("박길동"); ‌‌set.add("홍길동"); ‌‌ ‌‌System.out.println(set.size()); // 4 (중복 불가여서) ‌‌ ‌‌for (String str : set) { ‌‌‌System.out.println(str); ‌‌} ‌‌System.out.println("====================="); ‌‌ ​​​​​​​​// set을 추가하면 자동으로 list로 변경 ‌‌ArrayList<String> list = new ArrayList<String>(set); ‌‌ArrayList<String> list1 = new ArrayList<String>(set); ‌‌ ‌‌for (int i = 0; i < list.size(); i++) { ‌‌‌System.out.println(list.get(i)); ‌‌‌ ‌‌} ‌‌System.out.println("====================="); ‌‌ ‌‌// Iterator ‌‌Iterator<String> it = set.iterator(); ‌‌while(it.hasNext()) { ‌‌‌System.out.println(it.next()); ‌‌} ‌‌ } }

 

 

package coll; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import javax.swing.event.TreeSelectionEvent; public class Set02 { public static void main(String[] args) { ‌‌ ‌‌// TreeSet = 정렬되어 출력됨 ‌‌ ‌‌Set<Integer> ts = new HashSet<Integer>(); // 순서 없는 랜덤번호 // TreeSet<Integer> ts = new TreeSet<Integer>(); // 순서 있는 랜덤번호 (정렬) ‌‌for (int i = 0; i < 6; i++) { ‌‌‌ts.add((int)(Math.random()*45+1)); ‌‌} ‌‌System.out.println(ts); ‌‌ ‌‌ ‌‌// LinkedHashSet = ‌‌ ‌‌LinkedHashSet<Integer> ls = new LinkedHashSet<Integer>(); ‌‌for (int i = 0; i < 6; i++) { ‌‌‌int number =(int)(Math.random()*45+1); ‌‌‌System.out.println("숫자 : "+number); ‌‌‌ls.add(number); ‌‌} ‌‌System.out.println("결과 "); ‌‌System.out.println(ls); } }

 

 

 

 

 

 

 

 

 

 


< Map >

Map (key, value)로 저장. 사전처럼 저장함. key = 중복x, 순서

 

HashMap : 정렬 x, key 중복 x, null 허용

TreeMap : key 값들 정렬 o, 중복 x, null 없음

HashTable : 멀티 스레드 환경에서 사용함.  하나의 스레드가 실행을 완료해야 다른 스레드를 실행함

 

map.put();

 

 

package coll; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Map01 { public static void main(String[] args) { ‌‌ ‌‌Map<String, String> map = new HashMap<String, String>(); ‌‌map.put("수원", "왕갈비통닭"); ‌‌map.put("제주", "한라봉"); ‌‌map.put("평양", "냉면"); ‌‌map.put("횡성", "한우"); ‌‌map.put("나주", "배"); ‌‌ ‌‌System.out.println(map); ‌‌ ‌‌System.out.println(map.get("수원")); // map.get(key) = value 출력 ‌‌ // boolean key = map.containsKey("부천"); // boolean key = map.containsKey("제주"); ‌‌ ‌‌Set<String> key = map.keySet(); ‌‌System.out.println(key); ‌‌ ‌‌Set<String> value = new HashSet<String>(map.values()); ‌‌System.out.println(value); ‌‌List<String> list = new ArrayList<>(map.keySet()); ​​​​​​​​System.out.println(list); ​​​​​​​ ​​​​​​​​// for문으로 value 출력 ​​​​​​​ ​​​​​​​​for (int i = 0; i < map.size(); i++) { ​​​​​​​​​​​​System.out.println(map.get(list.get(i))); ​​​​​​​​} ​​​​​​​ ‌‌for (String str :map.keySet()) { ‌​​​​​​​​​System.out.println(str + " : " + map.get(str)); ‌​​​​​​ ‌‌} } }

 

 

package coll; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Tes02 { public static void main(String[] args) { ‌‌ ‌‌List<Map<String, String>> list = new ArrayList<Map<String, String>>(); ‌‌ ‌‌// Map 생성 ‌‌Map<String, String> map = new HashMap<String, String>(); ‌‌map.put("no", "1"); ‌‌map.put("title", "첫 글"); ‌‌map.put("write", "나"); ‌‌map.put("date", "2023-12-22"); ‌‌map.put("like", "5"); ‌‌list.add(map); // 한 줄 생성 ‌‌ ‌‌map = new HashMap<String, String>(); ‌‌map.put("no", "2"); ‌‌map.put("title", "두번째"); ‌‌map.put("write", "누구"); ‌‌map.put("date", "2023-12-10"); ‌‌map.put("like", "15"); ‌‌list.add(map); ‌‌ ‌‌map = new HashMap<String, String>(); ‌‌map.put("no", "3"); ‌‌map.put("title", "세번째"); ‌‌map.put("write", "김씨"); ‌‌map.put("date", "2023-12-15"); ‌‌map.put("like", "6"); ‌‌list.add(map); ‌‌ ‌‌map = new HashMap<String, String>(); ‌‌map.put("no", "4"); ‌‌map.put("title", "네번째"); ‌‌map.put("write", "최씨"); ‌‌map.put("date", "2023-12-23"); ‌‌map.put("like", "60"); ‌‌list.add(map); ‌‌ ‌‌map = new HashMap<String, String>(); ‌‌map.put("no", "5"); ‌‌map.put("title", "다섯번째"); ‌‌map.put("write", "박씨"); ‌‌map.put("date", "2023-12-19"); ‌‌map.put("like", "10"); ‌‌list.add(map); ‌‌ ‌‌System.out.println(list); ‌‌ ‌‌System.out.println("=========================") ‌‌ ‌‌System.out.println("번호 | 제목 | 글쓴이 | 날짜 | 좋아요"); ​​​​​​​ ‌‌for (int i = 0; i < list.size(); i++) { ‌‌‌System.out.print(list.get(i).get("no") + "\t"); ‌‌‌System.out.print(list.get(i).get("title")+ "\t"); ‌‌‌System.out.print(list.get(i).get("write")+ "\t"); ‌‌‌System.out.print(list.get(i).get("date")+ "\t"); ‌‌‌System.out.println(list.get(i).get("lke")); ‌‌‌ ‌‌} ‌‌System.out.println("============================================"); ‌‌ } }

 


 

 

 

 

 

 

 

 


package coll; import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Board { // 데이터 전송 객체로 변경 = DTO (Date Transfer Object) private int no, like; private String title, write, date; // 생성자 public Board(int no, String title, String write, String date, int like) { ‌‌this.no = no; ‌‌this.title = title; ‌‌this.write = write; ‌‌this.date = date; ‌‌this.like = like; } // getter setter public int getNo() { ‌‌return no; } public void setNo(int no) { ‌‌this.no = no; } public int getLike() { ‌‌return like; } public void setLike(int like) { ‌‌this.like = like; } public String getTitle() { ‌‌return title; } public void setTitle(String title) { ‌‌this.title = title; } public String getWrite() { ‌‌return write; } public void setWrite(String write) { ‌‌this.write = write; } public String getDate() { ‌‌return date; } public void setDate(String date) { ‌‌this.date = date; } } public class List03 { public static void main(String[] args) { ‌‌ ‌‌List<Board> list = new ArrayList<Board>(); // List에 Board 입력 ‌‌ ‌‌// 위에서 생성자를 만들고 순서대로 입력 ‌‌Board board = new Board(1, "첫 글", "나여", "2023-12-22", 1); ‌‌list.add(board); ‌‌ ‌‌Board board2 = new Board(2, "두번째", "누구", "2023-12-10", 5); ‌‌list.add(board2); ‌‌ ‌‌Board board3 = new Board(3, "세번째", "안녕", "2023-12-16", 15); ‌‌list.add(board3); ‌‌ ‌‌Board board4 = new Board(4, "네번째", "김씨", "2023-12-20", 20); ‌‌list.add(board4); ‌‌ ‌‌Board board5 = new Board(5, "다섯번", "크리", "2023-12-25", 30); ‌‌list.add(board5); ‌‌ // System.out.println(list); ‌‌System.out.println("번호 | 제목 | 글쓴이 | 날 짜 | 좋아요"); ‌‌ ‌‌for (int i = 0; i < list.size(); i++) { ‌‌‌System.out.print(list.get(i).getNo() + "\t"); ‌‌‌System.out.print(list.get(i).getTitle()+ "\t"); ‌‌‌System.out.print(list.get(i).getWrite()+ "\t"); ‌‌‌System.out.print(list.get(i).getDate()+ "\t"); ‌‌‌System.out.print(list.get(i).getLike()+ "\n"); ‌‌‌ ‌‌} } }

연습문제 (모스부호)

 

package dec22; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; public class Test01 { public static void main(String[] args) { ‌‌Scanner sc = new Scanner(System.in); ‌‌String input; ‌‌String morse[]; ‌‌System.out.println("부호를 입력하세요."); ‌‌input = sc.nextLine(); ‌‌// .... . ... .-.. . . .--. ... . .- .-. .-.. -.-- ‌‌morse = input.split(" "); ‌‌System.out.println(Arrays.toString(morse)); ‌‌// HashMap ‌‌Map<String, String> alpha = new HashMap<String, String>(); ‌‌alpha.put(".-", "A"); ‌‌alpha.put("-...", "B"); ‌‌alpha.put("-.-.", "C"); ‌‌alpha.put("-..", "D"); ‌‌alpha.put(".", "E"); ‌‌alpha.put("..-.", "F"); ‌‌alpha.put("--.", "G"); ‌‌alpha.put("....", "H"); ‌‌alpha.put("..", "I"); ‌‌alpha.put(".---", "J"); ‌‌alpha.put("-.-", "K"); ‌‌alpha.put(".-..", "L"); ‌‌alpha.put("--", "M"); ‌‌alpha.put("-.", "N"); ‌‌alpha.put("---", "O"); ‌‌alpha.put(".--.", "P"); ‌‌alpha.put("--.-", "Q"); ‌‌alpha.put(".-.", "R"); ‌‌alpha.put("...", "S"); ‌‌alpha.put("-", "T"); ‌‌alpha.put("..-", "U"); ‌‌alpha.put("...-", "V"); ‌‌alpha.put(".--", "W"); ‌‌alpha.put("-..-", "X"); ‌‌alpha.put("-.--", "Y"); ‌‌alpha.put("--..", "Z"); ‌‌alpha.put("", " "); ‌‌ ‌‌for (int i = 0; i < morse.length; i++) { ‌‌‌System.out.println(alpha.get(morse[i])); ‌‌} ‌‌System.out.println("==========================="); ‌‌ ‌‌ ‌‌ ‌‌ ‌‌alpha.get("A"); ‌‌alpha.get(morse[0]); ‌‌// 2차원 배열 ‌‌String alpha2[][] = new String[2][27]; ‌‌for (int i = 0; i < alpha2[0].length; i++) { ‌‌‌alpha2[0][i] = String.valueOf((char) (i + 65)); ‌‌} ‌‌alpha2[0][26] = " "; ‌‌// System.out.println(Arrays.toString(alpha2[0])); ‌‌alpha2[1] = new String[] { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", ‌‌‌‌"--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ‌‌‌‌"" }; ‌‌// System.out.println(Arrays.toString(alpha2[1])); ‌‌// morse[0].equals(alpha2[1][2]) ‌‌for (int i = 0; i < morse.length; i++) { ‌‌‌for (int j = 0; j < alpha2[1].length; j++) { ‌‌‌‌if (morse[i].equals(alpha2[1][j])) { ‌‌‌‌‌System.out.print(alpha2[0][j]); ‌‌‌‌‌break; ‌‌‌‌} ‌‌‌} ‌‌} ‌‌sc.close(); } }
반응형

댓글