集合APIの強化
コレクション工場
Java 9で使用可能
List<String> list = List.of("1", "2", "3");
=> 변경할 수 없는 리스트
Set<String> set = Set.of("1", "2", "3");
중복 요소 X -> IllegalArgumentException발생
집합은 오직 고유의 요소만 포함할 수 있다는 원칙!
Map<String, Integer> map = Map.ofEntries(
entry("1", 1),
entry("2", 2),
entry("3", 3)
);
Map.entry는 Map.Entry 객체를 만드는 새로운 팩토리 메서드
java 8!!
リストとコレクションの処理
インベントリ
List<Board> boards = new ArrayList<>(
Arrays.asList(
new Board("제목1", "내용1", true),
new Board("제목2", "내용2", true),
new Board("제목3", "내용3", false),
new Board("제목4", "내용4", false),
new Board("제목5", "내용5", true),
new Board("제목6", "내용6", false)
)
);
boards.removeIf(board -> board.isDelYn());
[
Board{title='제목3', content='내용3', delYn=false},
Board{title='제목4', content='내용4', delYn=false},
Board{title='제목6', content='내용6', delYn=false}
]
boards.replaceAll(board -> {
board.setContent(board.getContent() + " 입니다.");
return board;
});
[
Board{title='제목3', content='내용3입니다.', delYn=false},
Board{title='제목4', content='내용4입니다.', delYn=false},
Board{title='제목6', content='내용6입니다.', delYn=false}
]
地図
Map<String, String> maps = new HashMap();
maps.put("1", "프랑스");
maps.put("2", "한국");
maps.put("3", "미국");
maps.put("4", "아랍에미리트");
maps.put("5", "일본");
maps.forEach((key, name)-> System.out.println("key : " + key + ", 나라 : " + name));
maps.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(System.out::println);
3=미국
4=아랍에미리트
5=일본
1=프랑스
2=한국
getOrDefaultメソッド
System.out.println(
maps.getOrDefault("6", "없음")
); // 없음
System.out.println(
maps.getOrDefault("2", "없음")
); // 한국
与えられた鍵に対応する値がない場合、鍵を使用して新しい値を計算し、マッピングに追加する
提供鍵
提供鍵
maps.computeIfAbsent("6", (key) -> maps.put(key, "태국"));
System.out.println(maps); // {1=프랑스, 2=한국, 3=미국, 4=아랍에미리트, 5=일본, 6=태국}
maps.computeIfPresent("6", (key, value)-> value + " 중복");
System.out.println(maps); // {1=프랑스, 2=한국, 3=미국, 4=아랍에미리트, 5=일본, 6=태국 중복}
maps.replaceAll((key, value) -> value + " replaceAll");
System.out.println(maps); // {1=프랑스 replaceAll, 2=한국 replaceAll, 3=미국 replaceAll, 4=아랍에미리트 replaceAll, 5=일본 replaceAll}
maps.replace("2", "대한민국");
System.out.println(maps); // {1=프랑스, 2=대한민국, 3=미국, 4=아랍에미리트, 5=일본}
Map<String, Integer> map1 = new HashMap<>();
map1.put("A", 100);
map1.put("B", 200);
map1.put("C", 300);
Map<String, Integer> map2 = new HashMap<>();
map2.put("C", 400);
map2.put("D", 500);
map2.put("E", 600);
map1.putAll(map2);
System.out.println(map1); // {A=100, B=200, C=400, D=500, E=600}
// merge와 forEach를 사용하면 중복된 값을 어떻게 처리할지 처리할 수 있음.
map2.forEach((key, value) -> map1.merge(key, value, (v1, v2) -> v1 + v2));
System.out.println(map1); // {A=100, B=200, C=700, D=500, E=600}
改善されたConcurrentHashMap
ConcurrentHashMapクラスは、最新技術を反映した同期HashMapバージョンです.
検索
Reference
この問題について(集合APIの強化), 我々は、より多くの情報をここで見つけました https://velog.io/@jae_cheol/컬렉션-API-개선テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol