반응형
< 컬렉션 >
컬렉션 하위에 존재 : 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, 순서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();
}
}
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 26일차 TIL] JSP 프로젝트 생성, 데이터베이스 연결 (0) | 2023.12.27 |
---|---|
[국비 25일차 TIL] JAVA 예외 처리, try catch finally (1) | 2023.12.27 |
[국비 23일차 TIL] Wrapper, List, Set, Map (1) | 2023.12.21 |
[국비 22일차 TIL] 인터페이스, 상속, 메모리 (0) | 2023.12.20 |
[국비 21일차 TIL] 자바 오버라이드, 오버로드, 다형성, 추상화 (0) | 2023.12.19 |
댓글