一、Optional
public void test() {
// 创建空对象
Optional<Object> empty = Optional.empty();
// 使用非null创建对象
Optional<String> roger = Optional.of("roger");
// 使用任意值创建对象
Optional<Object> optional = Optional.ofNullable(null);
// 判断是否引用缺失的方法(建议不直接使用)
boolean present = optional.isPresent();
// 当optional引用存在时执行
optional.ifPresent(System.out::println);
Object orElse = optional.orElse("引用缺失");
optional.orElseGet(() -> {
return "自定义引用缺失";
});
Object orElseThrow = optional.orElseThrow(() -> {
throw new RuntimeException("返回一个异常!");
});
}
public static void stream(List<String> list) {
// list.stream().forEach(System.out::println);
Optional.ofNullable(list)
.map(List::stream)
.orElseGet(Stream::empty)
.forEach(System.out::println);
}
public static void main(String[] args) {
stream(null);
}
二、不可变对象
ImmutableSet.copyOf();
ImmutableSet.of();
ImmutableSet.builder().add();
三、新集合类型
Multiset
// 一段文字中字数 multiset = list + set
private static final String text =
"南陵别儿童入京" +
"白酒新熟山中归,黄鸡啄黍秋正肥。" +
"呼童烹鸡酌白酒,儿女嬉笑牵人衣。" +
"高歌取醉欲自慰,起舞落日争光辉。" +
"游说万乘苦不早,著鞭跨马涉远道。" +
"会稽愚妇轻买臣,余亦辞家西入秦。" +
"仰天大笑出门去,我辈岂是蓬蒿人。";
public void handle() {
Multiset<Character> multiset = HashMultiset.create();
char[] chars = text.toCharArray();
Chars.asList(chars)
.stream()
.forEach(charItem -> {
multiset.add(charItem);
});
System.out.println("size : " + multiset.size());
System.out.println("人 count : " + multiset.count('人'));
}
四、集合工具类
Sets
并集 、交集、差集、分解集合中所有子集、两个集合笛卡尔积
Lists
反转、拆分
五、IO
source 源
sink 汇