본문 바로가기
개발 공부 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();
	}
}
반응형

댓글