본문 바로가기

JAVA

231222 Java

모스부호 해석하기

package study;

import java.util.Arrays;
import java.util.Scanner;

public class Study01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(morseReturn(sc.nextLine()));
//        String secret = sc.nextLine();
//        String s = morseReturn(secret);
//        System.out.println(s); 
메소드를 새로 만들어 작성한 내용
이후는 메소드 없이 처리하는 방법
//        String[] morse = new String[] {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
//        String secret = ".... .  ... .-.. . . .--. ...  . .- .-. .-.. -.--";

//        String[] secretmorse = secret.split(" ");
//        System.out.println(Arrays.toString(secretmorse));
//        A:for (int i = 0; i < secretmorse.length; i++) {
//            for (int j = 0; j < morse.length; j++) {
//                if (secretmorse[i].equals(morse[j])) {
//                    answer += (char) (j + 'a');
//                } else if (secretmorse[i].isBlank()) {
//                    answer += " ";
//                    continue A;
//                }
//            }
//        }
    }
    static String morseReturn (String morse1) {
        String answer = "";
        String[] morse = new String[] {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        String[] secretmorse = morse1.split(" ");
        A : for (int i = 0; i < secretmorse.length; i++) {
            for (int j = 0; j < morse.length; j++) {
                if (secretmorse[i].equals(morse[j])) {
                    answer += (char) (j + 'a');
                } else if (secretmorse[i].isBlank()) {
                    answer += " ";
                    break; // break 혹은 continue A 해도 가능
                }
            }
        }
        return answer;
    }
}

 

Collection

package coll;
// 컬렉션
/*
 * Collection 하위
 *   List(I) : 순서 O, 중복 O
 *   Set(I) : 순서 X, 중복 X
 *
 * Map(I) : Key, Value 형식으로 저장 = 딕셔너리 형태, 순서 X, Key 중복 X, Value 중복 O
 * 
 */
public class Coll01 {}

 

List 의 메소드 알아보기

package coll;

import java.util.ArrayList;
import java.util.List;

public class List01 {
    public static void main(String[] args) {
        // 부모클래스             자식클래스
        List<String> list = new ArrayList<>();
        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)); // 배열의 마지막 값 출력
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        list.add(1, "황길동"); // list 1 번 인덱스에 값 추가
        System.out.println(list); // [홍길동, 황길동, 김길동, 이길동, 박길동, 홍길동]

        // 새로운 컬렉션
        List<String> list2 = new ArrayList<>();
        list2.add("데이비드");
        list2.add("워쇼스키");
        list2.add("바이든");

        // 두개의 list 를 하나로 합치기
        list.addAll(list2);
        System.out.println(list); // [홍길동, 황길동, 김길동, 이길동, 박길동, 홍길동, 데이비드, 워쇼스키, 바이든]

        System.out.println(list.contains("데이비드")); // false, boolean 값 리턴
        System.out.println(list.contains("당근쿤")); // true
        System.out.println(list.containsAll(list2)); // true, list2 의 값 전체가 포함된 여부 확인
        list.indexOf("홍길동"); // 0, 값이 처음으로 위치한 index 값 출력
        System.out.println(list.lastIndexOf("데이비드")); // 6, 값이 마지막으로 위치한 index 값 출력
        System.out.println(list.lastIndexOf("홍길동")); // 5, 값이 마지막으로 위치한 index 값 출력
        Object[] a = list.toArray(); // object[] 반환
        List<String> sList = list.subList(3,5);
        System.out.println(sList); // [이길동, 박길동], 3 번 index ~ 5 번 index 이전까지
    }
}

 

Set, 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<>();
        set.add("홍길동");
        set.add("김길동");
        set.add("이길동");
        set.add("박길동");
        set.add("홍길동");
        System.out.println(set); // [박길동, 김길동, 홍길동, 이길동], 중복 자동 제거

        for(String s : set) {
            System.out.println(s);
        }

        ArrayList<String> list = new ArrayList<>(set); // set 에 저장된 값 list 변환

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        // Iterator
        Iterator<String> iterator = set.iterator(); // set 의 값 Iterator 저장
        while (iterator.hasNext()) { // iterator 에 다음 값의 여부 판별
            System.out.println(iterator.next()); // iterator 에 저장된 다음 값 출력
        }
    }
}

 

TreeSet, LinkedHashSet

package coll;

import java.util.LinkedHashSet;
import java.util.TreeSet;

public class Set02 {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();
        for (int i = 0; i < 6; i++) {
            treeSet.add((int) (Math.random() * 45 + 1));
        }
        System.out.println(treeSet); // TreeSet 은 기본 오름차순으로 정렬

        LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>();
        for (int i = 0; i < 6; i++) {
            int number = (int) (Math.random() * 45 + 1);
            System.out.print("뽑힌 숫자 : " + number + " ");
            linkedHashSet.add(number);
        }
        System.out.println();
        System.out.println(linkedHashSet);
        // 뽑힌 숫자 : 14 뽑힌 숫자 : 7 뽑힌 숫자 : 8 뽑힌 숫자 : 25 뽑힌 숫자 : 29 뽑힌 숫자 : 4
        // [14, 7, 8, 25, 29, 4]
        // linkedHashSet 에 저장된 순서대로 저장 및 출력
    }
}

 

Map, HashMap, TreeMap, HashTable

package coll;

import java.util.*;
/*
 * Map : Key : Value 로 저장. Key 는 중복 X, 순서 X
 *
 * HashMap : 정렬이 없음, Key 중복 없음, Null 허용
 *
 * TreeMap : Key 값 들이 정렬되어 있음, 중복 없음, Null 없음
 *
 * HashTable : 멀티 스레드 환경에서 사용
 *             하나의 스레드가 실행을 완료해야 다른 스레드를 실행
 */
public class Map01 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("수원", "왕갈비통닭");
        map.put("제주", "갈치");
        map.put("서울", "?");
        map.put("평양", "냉면");
        map.put("함흥", "냉면");
        map.put("이천", "반도체");
        System.out.println(map);
        // {수원=왕갈비통닭, 이천=반도체, 평양=냉면, 서울=?, 함흥=냉면, 제주=갈치}
        System.out.println(map.get("이천")); // 반도체, Key 로 Value 값 출력
        System.out.println(map.containsKey("나주")); // Key 값의 여부 출력, boolean 타입
        System.out.println(map.containsValue("반도체")); // Value 값 여부 출력, boolean 타입

        Set<String> key = map.keySet(); // map 의 Key 값만 저장
        System.out.println(key); // [수원, 이천, 평양, 서울, 함흥, 제주]
        Set<String> value = new HashSet<>(map.values()); // map 의 value 값 저장
        System.out.println(value); // [반도체, 갈치, 왕갈비통닭, 냉면, ?]

        List<String> list = new ArrayList<>(map.keySet());
        System.out.println(list);
        for (int i = 0; i < map.size(); i++) {
            System.out.println(list.get(i) + " : " + map.get(list.get(i)));
        }
//        List<String> list2 = new ArrayList<>(map.values());
//        System.out.println(list2);
    }
}

 

Map 과 List 의 결합

package coll;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test02 {
    public static void main(String[] args) {
        List<Map<String, String>> list = new ArrayList<>();

        Map<String, String> map = new HashMap<>();
        map.put("no", "1");
        map.put("title", "첫번째 글");
        map.put("write", "poseidon");
        map.put("date", "2023-12-20");
        map.put("like", "5");
        list.add(map);

        map = new HashMap<>();
        map.put("no", "2");
        map.put("title", "두번째 글");
        map.put("write", "hong");
        map.put("date", "2023-12-21");
        map.put("like", "5");
        list.add(map);

        map = new HashMap<>();
        map.put("no", "3");
        map.put("title", "세번째 글");
        map.put("write", "kim");
        map.put("date", "2023-12-22");
        map.put("like", "6");
        list.add(map);

        map = new HashMap<>();
        map.put("no", "4");
        map.put("title", "네번째 글");
        map.put("write", "han");
        map.put("date", "2023-12-23");
        map.put("like", "7");
        list.add(map);

        map = new HashMap<>();
        map.put("no", "5");
        map.put("title", "다섯번째 글");
        map.put("write", "lee");
        map.put("date", "2023-12-24");
        map.put("like", "15");
        list.add(map);
        System.out.println(map.get("no"));
        System.out.println(list.size()); // 5
        System.out.println("--------------------");
//        for (int i = 1; i <= list.size(); i++) {
//            System.out.println(list.get(Integer.parseInt(map.get("no")) - i));
//            System.out.println(list.get(i-1));
//        }
        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("like"));
        }
    }
}

 

새로운 클래스를 만들어 List 생성 및 조회하기

package coll;

import java.util.ArrayList;
import java.util.List;

class Board { // 데이터 전송 객체 : DTO, (Data Trans Object)
    private int no, like;
    private String title, write, date;

    public Board(int no, int like, String title, String write, String date) {
        this.no = no;
        this.like = like;
        this.title = title;
        this.write = write;
        this.date = date;
    }

    public int getNo() {
        return no;
    }

    public int getLike() {
        return like;
    }

    public String getTitle() {
        return title;
    }

    public String getWrite() {
        return write;
    }

    public String getDate() {
        return date;
    }
}
public class List03 {
    public static void main(String[] args) {
        List<Board> list = new ArrayList<>();
//        list.add(new Board(1, 51, "제목1", "글쓴이1", "날짜1"));
//        list.add(new Board(2, 52, "제목2", "글쓴이2", "날짜2"));
//        list.add(new Board(3, 53, "제목3", "글쓴이3", "날짜3"));
//        list.add(new Board(4, 54, "제목4", "글쓴이4", "날짜4"));
//        list.add(new Board(5, 55, "제목5", "글쓴이5", "날짜5"));
//        System.out.println(list); // 주소 값만 출력
        Board board1 = new Board(1, 51, "제목1", "글쓴이1", "날짜1");
        Board board2 = new Board(2, 52, "제목2", "글쓴이2", "날짜2");
        Board board3 = new Board(3, 53, "제목3", "글쓴이3", "날짜3");
        Board board4 = new Board(4, 54, "제목4", "글쓴이4", "날짜4");
        Board board5 = new Board(5, 55, "제목5", "글쓴이5", "날짜5");
        list.add(board1);
        list.add(board2);
        list.add(board3);
        list.add(board4);
        list.add(board5);
        System.out.println(list); // 이것도 주소 값만 출력
        // [coll.Board@1e643faf, coll.Board@6e8dacdf, coll.Board@7a79be86, coll.Board@34ce8af7, coll.Board@b684286]
//        System.out.println(list.get(0).no); // 1
//        for (int i = 0; i < list.size(); i++) {
//            System.out.print(list.get(i).no + "\t");
//            System.out.print(list.get(i).like + "\t");
//            System.out.print(list.get(i).title + "\t");
//            System.out.print(list.get(i).write + "\t");
//            System.out.println(list.get(i).date + "\t");
//        } // private 이전 사용
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i).getNo() + "\t");
            System.out.print(list.get(i).getLike() + "\t");
            System.out.print(list.get(i).getTitle() + "\t");
            System.out.print(list.get(i).getWrite() + "\t");
            System.out.println(list.get(i).getDate());
        }
    }
}

'JAVA' 카테고리의 다른 글

231227 Java  (0) 2023.12.27
231226 Java  (0) 2023.12.26
231221 Java  (2) 2023.12.21
231220 Java  (0) 2023.12.20
231219 Java  (0) 2023.12.19