Js中Symbol物件
lambda四大內建核心函式式介面:
Consumer<T> :消費性介面
void accept(T t);
Suppiler<T>:供給性介面
T get();
Function<T,R>:函式型介面
R apply(T t);
Predicate<T> :斷言型介面
boolean test(T t);
時間和日期得處理:
1.LocalDate LocalTime localDateTime
得到當前得時間
2、Instant
時間戳偏移量距離我們得時間是8,獲取得是UTC時區
3、Duration
計算倆個時間之間得間隔
4、Period
計算倆個日期之間得間隔
流的操作(Stream)
流得三個步驟:
建立流:
建立方式:
陣列得話用Arrarys.asList作為list或者直接用
Arrays.stream(employees)
,然後變成集合用.stream().如果是集合得話直接用.stream();
//通過Collection系列提供Stream 和裡面的.stream方法 List<String > strings=new ArrayList<>(); Stream<String> stringStream=strings.stream();//通過Arrarys裡面的靜態方法stream Employee[] employees=new Employee[10]; Stream<Employee> employees1= Arrays.stream(employees); //通過Stream中的of方法 Stream<String > stringStream1=Stream.of("dsag","gfdgfh","uerbg"); //建立無限流 Stream<Integer> stream=Stream.iterate(2,(x)->x+2); stream.limit(10).forEach(System.out::println);
中間操作:
篩選與切片:
filter:接受lambda,從流中排除某些元素;
limit:截斷流,使其元素不超過給定數量
skip(n)跳過元素,返回一個扔掉了前n個元素得流。若流中元素不足n個,則返回一個空流,與limit(n)互補;
distinct :篩選,通過流所生成得元素得hashCode和equals去除重複元素。
map :對映,接受lambda,將元素轉化成其他形式或者提取資訊,接受一個函式作為引數,該函式會被應用到每個元素上,並將其對映成一個新的元素;(用map把要的項提取出來,不是過濾,過濾不會提取某一項出來)
flatMap: 接受一個函式作為引數,將每個值都換成另一個流,然後將所有流連線成一個流;
sort() 自然排序
sort(Comparator com)--定製排序.
(中間操作得話返回得式一個流,但是沒有)
終止操作:
reduce():歸約,reduce(T identity,BinaryOperator)/reduce(BinaryOperator)可以將流中元素反覆結合起來,得到一個值。reduce(Double::sum)
collect():收集,將流轉化為其他形式,接受一個Collector介面得實現,用於給Stream中元素做彙總得方法。
Collectors.求和得、平均數得、最大值,最小值、總數得,轉換成list得,轉化成map得。都有對應得方法。.foreach對其中得每一個進行操作。
groupingBy: 分組,一個引數就是分組,倆個引數,第二個引數是進一步分組。
然後Collectors.summarzingdouble/int()這個用變數接了之後又求求和得、平均數得、最大值,最小值、總數得方法在。
Collectors.joining: 連線