package demo;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class NewFeatures {
public static void main(String[] args) {
enhanceStream();
}
/**
* 局部變量類型推斷
*/
static void infoVarType() {
var num = 123;
var str = "123456";
System.out.println(num);
System.out.println(str);
}
/**
* 字符串加強
*/
static void enhanceString() {
var str = " abcdefg ";
System.out.println(str.strip());
System.out.println(str.stripLeading());
System.out.println(str.stripTrailing());
System.out.println(str.repeat(2));
System.out.println(str.codePointAt(2));
System.out.println(str.codePointBefore(2));
System.out.println(str.codePointCount(2,4));
str.codePoints().forEach(i -> System.out.println(i));
System.out.println(str.codePoints().sum());
}
/**
* 集合增強 不可變集合 (繼承 AbstractImmutableList)
*/
static void enhanceCollection() {
var list = List.of("a", "b", "c");
List<String> strings = List.copyOf(list);
Map.of(1,"a", 2,"b");
Set.of(1, 2, 3, 4);
}
/**
* Stream增強
* 和 filter 的區別, filter過濾所有滿足的數據, takeWhile和dropWhile過濾結果爲:第一個不滿足前滿足的數據
*/
static void enhanceStream() {
List<Integer> list = Stream.of(6, 1, 2, 3, 4, 5, 6, 7, 4).takeWhile(v -> v < 5).collect(Collectors.toList());
list.forEach(v -> System.out.println(v));
System.out.println("----------------");
List<Integer> nums = Stream.of(1, 2, 3, 4, 3, 2, 1).dropWhile(v -> v < 3).collect(Collectors.toList());
nums.forEach(v -> System.out.println(v));
}
}