private static List list = new ArrayList();public static voidmain(String[] args) {
list=Arrays.asList(new User(1, "a", 10),new User(4, "d", 19),new User(5, "e", 13),new User(2, "b", 14),new User(3, "a", 10),new User(6, "f", 16)
);long start =System.currentTimeMillis();
order();
println(String.format("耗时[%s]毫秒", (System.currentTimeMillis() -start)));
}/*** 多条件去重
*@paramlist*/
public static voidorder() {
list.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(()-> new TreeSet<>(
Comparator.comparing(o-> o.getAge() + ";" + o.getName()))), ArrayList::new)).forEach(u ->println(u));
}public static voidgroup() {
Map> collect =list.stream().collect(Collectors.groupingBy(User::getAge));
System.out.println(collect);
}/*** filter过滤
*@paramlist*/
public static voidfilterAge() {
list.stream().filter(u-> u.getAge() == 10).forEach(u ->println(u));
}/*** sorted排序*/
public static voidstord() {
list.stream().sorted(Comparator.comparing(u-> u.getAge())).forEach(u ->println(u));
}/*** limit方法限制最多返回多少元素*/
public static voidlimit() {
list.stream().limit(2).forEach(u ->println(u));
}/*** 不要前多n个元素,n大于满足条件的元素个数就返回空的流*/
public static voidskip() {
list.stream().skip(2).forEach(u ->println(u));
}//最大值 最小值
public static voidstatistics() {
Optional min =list.stream().min(Comparator.comparing(User::getUserId));
println(min);
Optional max =list.stream().max(Comparator.comparing(User::getUserId));
println(max);
}//统计
public static voidsummarizingInt(){
IntSummaryStatistics statistics=list.stream().collect(Collectors.summarizingInt(User::getAge));double average =statistics.getAverage();long count =statistics.getCount();int max =statistics.getMax();int min =statistics.getMin();long sum =statistics.getSum();
println(average);
println(count);
println(min);
println(sum);
println(max);
}/*** 转set*/
public static voidtoSet() {
Set collect =list.stream().collect(Collectors.toSet());
Iterator iterator =collect.iterator();while(iterator.hasNext()) {
System.out.println(iterator.next().getUserId());
}
}/*** 转map*/
public static voidtoMap() {
Map collect = list.stream().collect(Collectors.toMap(User::getUserId, u ->u));for(Integer in : collect.keySet()) {
User u= collect.get(in);//得到每个key多对用value的值
println(u);
}
}/***map*/
public static voidmap() {
list.stream().map(User::getUserId).forEach(userId->println(userId));
list.stream().mapToInt(User::getAge).forEach(userId->println(userId));
list.stream().mapToDouble(User::getUserId).forEach(userId->println(userId));
list.stream().mapToLong(User::getUserId).forEach(userId->println(userId));
}/*** 查找与匹配
* allMatch方法与anyMatch差不多,表示所有的元素都满足才返回true。noneMatch方法表示没有元素满足*/
public static voidanyMatch() {boolean anyMatch = list.stream().anyMatch(u -> u.getAge() == 100);boolean allMatch = list.stream().allMatch(u -> u.getUserId() == 10);boolean noneMatch = list.stream().noneMatch(u -> u.getUserId() == 10);
println(anyMatch);
println(allMatch);
println(noneMatch);
}/*** reduce操作*/
public static voidreduce() {
Optional sum =list.stream().map(User::getAge).reduce(Integer::sum);
Optional max =list.stream().map(User::getAge).reduce(Integer::max);
Optional min =list.stream().map(User::getAge).reduce(Integer::min);
println(sum);
println(max);
println(min);
}/*** 公共输出
*@paramc*/
public static voidprintln(Object c) {
System.out.println(c.toString());
}