java8中collection常用方法

合集下载

Java8Stream的终极技巧——Collectors操作

Java8Stream的终极技巧——Collectors操作

Java8Stream的终极技巧——Collectors操作1. 前⾔昨天在相关的⽂章中提到了Collectors。

相信很多同学对这个⽐较感兴趣,那我们今天就来研究⼀下Collectors。

2. Collectors 的作⽤Collectors是 Java 8 加⼊的操作类,位于java.util.stream包下。

它会根据不同的策略将元素收集归纳起来,⽐如最简单常⽤的是将元素装⼊Map、Set、List等可变容器中。

特别对于来说⾮常有⽤。

它提供了collect()⽅法来对Stream流进⾏终结操作派⽣出基于各种策略的结果集。

我们就借助于Stream来熟悉⼀下Collectors吧。

我们依然⽤昨天的例⼦:List<String> servers = new ArrayList<>();servers.add("Felordcn");servers.add("Tomcat");servers.add("Jetty");servers.add("Undertow");servers.add("Resin");3. Java 8 中 Collectors 的⽅法Collectors提供了⼀系列的静态⽅法供我们使⽤,通常情况我们静态导⼊即可使⽤。

接下来我们来看看都提供了哪些⽅法吧。

3.1 类型归纳这是⼀个系列,作⽤是将元素分别归纳进可变容器List、Map、Set、Collection或者ConcurrentMap。

Collectors.toList();Collectors.toMap();Collectors.toSet();Collectors.toCollection();Collectors.toConcurrentMap();我们可以根据以上提供的 API 使⽤Stream的collect⽅法中的转换为熟悉的集合容器。

collections java方法

collections java方法

collections java方法Collections是Java中的一个工具类,提供了一系列静态方法,用于操作集合类(Collection)和数组。

本文将介绍Collections类中的一些常用方法。

一、排序方法Collections类提供了多种排序方法,可以对列表、集合或数组进行排序。

其中最常用的是sort()方法,可以对List进行升序排序。

例如:List<Integer> list = new ArrayList<>();list.add(3);list.add(1);list.add(2);Collections.sort(list);System.out.println(list); // 输出:[1, 2, 3]二、查找方法Collections类还提供了一些查找方法,如binarySearch()和indexOfSubList()等。

binarySearch()方法用于在有序列表中查找指定元素的索引,如下所示:List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);int index = Collections.binarySearch(list, 2);System.out.println(index); // 输出:1三、反转方法Collections类的reverse()方法可以用于反转List中元素的顺序。

例如:List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);Collections.reverse(list);System.out.println(list); // 输出:[3, 2, 1]四、填充方法Collections类的fill()方法可以将List中的所有元素替换为指定的元素。

java8新特性之stream的collect实战教程

java8新特性之stream的collect实战教程

java8新特性之stream的collect实战教程1、list转换成list不带return⽅式List<Long> ids=wrongTmpList.stream().map(c->c.getId()).collect(Collectors.toList());带return⽅式// spu集合转化成spubo集合//java8的新特性List<SpuBo> spuBos=spuList.stream().map(spu -> {SpuBo spuBo = new SpuBo();BeanUtils.copyProperties(spu, spuBo);//查询品牌名称Brand brand = this.brandMapper.selectByPrimaryKey(spu.getBrandId());spuBo.setBname(brand.getName());//查询类别名称List<String> names = this.categoryService.queryNamesByIds(Arrays.asList(spu.getCid1(), spu.getCid2(), spu.getCid3()));spuBo.setCname(StringUtils.join(names, "-"));return spuBo;}).collect(Collectors.toList());2、list转mapMap<Long, Active> activeMap = actives.stream().collect(Collectors.toMap(Active::getId, s->s));3、分组统计计算list转map(根据某个属性进⾏分组)Map<Long, List<TrainPlan>> trainMaps = trainPlans.stream().collect(Collectors.groupingBy(TrainPlan::getModuleId));list转map(统计计算)List<StatDepartment> statDepartments = projectModuleBSDao.statProModByDepartment(params);Map<Long, Integer> projectNumByDep = statDepartments.stream().collect(Collectors.groupingBy(StatDepartment::getDepartmentId, Collectors.summingInt(StatDepartment::getProjectNum)));补充知识:Java8新特性学习-函数式编程(Stream/Function/Optional/Consumer)Java8新引⼊函数式编程⽅式,⼤⼤的提⾼了编码效率。

Java-Collectors常用的20个方法

Java-Collectors常用的20个方法

Java-Collectors常⽤的20个⽅法相思相见知何⽇?此时此夜难为情。

返回List集合: toList()⽤于将元素累积到List集合中。

它将创建⼀个新List集合(不会更改当前集合)。

List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);integers.stream().map(x -> x*x).collect(Collectors.toList());// output: [1,4,9,16,25,36,36]返回Set集合: toSet()⽤于将元素累积到Set集合中。

它会删除重复元素。

List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);integers.stream().map(x -> x*x).collect(Collectors.toSet());// output: [1,4,9,16,25,36]返回指定的集合: toCollection()可以将元素雷击到指定的集合中。

List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);integers.stream().filter(x -> x >2).collect(Collectors.toCollection(LinkedList::new));// output: [3,4,5,6,6]计算元素数量: Counting()⽤于返回计算集合中存在的元素个数。

List<Integer> integers = Arrays.asList(1,2,3,4,5,6,6);Long collect = integers.stream().filter(x -> x <4).collect(Collectors.counting());// output: 3求最⼩值: minBy()⽤于返回列表中存在的最⼩值。

java collect 用法

java collect 用法

java collect 用法摘要:1.Java collect 概述2.collect 方法的参数和使用场景3.collect 方法的应用实例正文:Java collect 是一个非常有用的方法,它主要用于对集合进行操作,如过滤、映射、排序等。

collect 方法是Java 8 中引入的Stream API 的一部分,它将函数式编程的特性引入了Java 语言。

## Java collect 概述collect 方法位于java.util.stream 包中,它是一个静态方法,可以对Stream 对象进行终端操作。

collect 方法接收一个Collector 对象作为参数,该对象定义了如何将Stream 中的元素收集到一个新的目标集合中。

## collect 方法的参数和使用场景`collect` 方法的基本语法如下:```collect(Collector<? super T, ?, R> collector)```其中,`T` 是源集合的元素类型,`R` 是目标集合的元素类型。

`Collector` 是一个接口,它有三个泛型参数:- ` supplier`:用于创建目标集合的元素- ` accumulator`:用于在目标集合中累积元素- ` combiner`:用于合并多个目标集合## collect 方法的应用实例以下是一个简单的collect 方法应用实例,它使用collect 方法将一个字符串列表转换为一个字符串数组:```javaimport java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> strList = Arrays.asList("a", "b", "c", "d");String[] strArray =strList.stream().collect(Collectors.toArray(String[]::new));System.out.println(Arrays.toString(strArray));}}```在这个例子中,我们使用了`Collectors.toArray` 方法,它是一个特殊的Collector,用于将Stream 中的元素收集到一个数组中。

java stream的collect用法与原理

java stream的collect用法与原理

java stream的collect用法与原理摘要:1.Java Stream 简介2.Java Stream 的collect 用法3.Java Stream 的collect 原理4.示例与实践正文:【1.Java Stream 简介】Java Stream 是Java 8 中引入的一种新的数据处理方式,它的出现使得Java 程序员可以以更加简洁、高效的方式处理数据。

Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate)或者大批量数据操作。

【2.Java Stream 的collect 用法】Java Stream 的collect 方法是用于收集Stream 中的数据并返回一个结果的函数式接口。

它的主要作用是将Stream 中的数据进行收集,并将结果收集到一个具体的集合中。

collect 方法的语法如下:```javaOptional<Collector<T,?, R>> collect(Collector<? super T,?, R> collector);```其中,T 是Stream 中的元素类型,R 是收集后的结果类型,?是泛型参数。

【3.Java Stream 的collect 原理】Java Stream 的collect 方法实际上是对Stream 中的数据进行归约操作。

归约操作是指将一个Stream 中的多个元素通过一个特定的规则进行合并,从而得到一个最终的结果。

collect 方法接收一个Collector 对象作为参数,该对象用于定义归约操作的规则。

Collector 对象包含三个方法:supplier()、accumulator()、combiner(),它们分别用于生成初始值、累积中间值和合并最终值。

【4.示例与实践】下面我们通过一个具体的示例来演示Java Stream 的collect 用法和原理。

遍历Collection集合中的6种方法:

遍历Collection集合中的6种⽅法:下⾯的代码演⽰了遍历Collection集合的6种⽅法,注意Collection集合的遍历远不⽌于增强for循环,和迭代器两种。

代码如下:1package com.qls.traverse;23import java.util.ArrayList;4import java.util.Arrays;5import java.util.Collections;6import java.util.Enumeration;7import java.util.Iterator;8import java.util.LinkedList;9import java.util.List;10import java.util.Stack;1112/**13 * 下⾯是遍历Collection的⼏种⽅法,以List接⼝为例:14 * @author秦林森15 *16*/17public class ListTest {1819public static void main(String[] args) {20// TODO Auto-generated method stub21 String[] s="sixi is one of the most beautiful villages in china".split(" ");22 List<String> list = Arrays.asList(s);23/**24 * 第⼀种⽅法⽤增强for循环。

(这⾥List之所以能⽤增强for循环其原因在于它实现了Iterable接⼝)25*/26for(String str:list){27 System.out.print(str+" ");28 }29 System.out.println();30 System.out.println("************");31/**32 * 第⼆种⽅法⽤Iterator33*/34 Iterator<String> it = list.iterator();35while(it.hasNext()){36 String next = it.next();37 System.out.print(next+" ");38 }39 System.out.println();40 System.out.println("************");41/**42 * 第三种⽅法主要针对LinkedList。

java中.collect用法

在Java中,.collect()方法是Stream API中的一个重要方法,它主要用于将流中的元素收集到不同类型的结果容器中,例如List、Set或Map。

.collect()方法的灵活性和功能丰富性使得它成为处理集合数据的强大工具。

在本篇文章中,我将从不同角度深入探讨Java中.collect()方法的使用,并共享一些个人观点和理解。

一、基本用法让我们从.collect()方法的基本用法开始。

在Stream API中,.collect()方法通常和Collectors类一起使用,以便将流中的元素按照我们的需求收集到不同类型的容器中。

我们可以使用Collectors.toList()将流中的元素收集到一个List集合中,或者使用Collectors.toSet()将流中的元素收集到一个Set集合中。

另外,如果我们需要将流中的元素按照某种规则收集到Map中,也可以使用Collectors.toMap()方法。

二、进阶用法除了基本的收集功能之外,.collect()方法还支持一些进阶用法,例如对元素进行分组、分区、连接等操作。

通过使用Collectors.groupingBy()方法,我们可以将流中的元素按照指定的条件进行分组;而使用Collectors.partitioningBy()方法,则可以根据指定的条件将元素分成两部分。

.collect()方法还支持对元素进行连接操作,我们可以使用Collectors.joining()方法将流中的元素连接成一个字符串。

三、个人观点在我看来,.collect()方法是Stream API中最具灵活性和实用性的方法之一。

它不仅可以帮助我们高效地处理集合数据,还可以让我们在代码中以一种更函数式的风格进行操作。

另外,通过合理地结合使用.collect()方法和Collectors类中提供的各种方法,我们可以以更简洁、更优雅的方式完成对集合数据的处理和转换。

我个人非常喜欢使用.collect()方法,因为它给予了我处理集合数据的全新视角,让我能够更加高效地编写Java程序。

Java8新特性:list.stream().map().collect()

Java8新特性:list.stream().map().collect()StreamStream(流)是⼀个来⾃数据源的元素队列并⽀持聚合操作;mapmap ⽅法⽤于映射每个元素到对应的结果;CollectorsCollectors 类实现了很多归约操作,例如将流转换成集合和聚合元素。

Collectors 可⽤于返回列表或字符串。

使⽤⽅式:1.⾸先创建⼀个实体类,添加部分属性;public class Student {public Student(String name,Integer age){=name;this.age=age;}private String name;private Integer age;public String getName() {return name;}public void setName(String name) { = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "name="+getName()+", age="+getAge();}}2. 新建实体集合并添加⼏条数据;List<Student> list = new ArrayList<>();list.add(new Student("ymw", 30));list.add(new Student("yh", 30));返回结果:[name=ymw, age=30, name=yh, age=30]3. 清空某个属性的值并返回结果:list.stream().map(it ->{it.setName("");return it;}).collect(Collectors.toList());System.out.println(list.toString());返回结果:[name=, age=30, name=, age=30]4. 获取其中某个属性的集合:List collection = list.stream().map(Student::getAge).collect(Collectors.toList());System.out.println(collection.toString());返回结果:[30, 30]。

collection接口方法

collection接口方法Collection接口方法详解概述Collection是Java集合框架中的一个接口,它继承了Iterable 接口,并且是List、Set等集合类的父接口。

本文将详细介绍Collection接口的各种方法以及它们的作用。

方法列表1. boolean add(E element)•参数:要添加的元素(element)•返回值:添加成功返回true,否则返回false•作用:将指定的元素添加到集合中2. boolean remove(Object element)•参数:要移除的元素(element)•返回值:移除成功返回true,否则返回false•作用:从集合中移除指定的元素3. boolean contains(Object element)•参数:待查找的元素(element)•返回值:如果集合包含指定的元素,返回true,否则返回false •作用:判断集合中是否包含指定元素4. boolean isEmpty()•返回值:如果集合为空,返回true,否则返回false•作用:判断集合是否为空5. int size()•返回值:返回集合中元素的个数•作用:获取集合的大小6. boolean addAll(Collection<? extends E> collection)•参数:要添加的集合(collection)•返回值:如果集合发生变化,返回true,否则返回false•作用:将指定集合中的所有元素添加到当前集合7. boolean removeAll(Collection<?> collection)•参数:要移除的集合(collection)•返回值:如果集合发生变化,返回true,否则返回false•作用:从当前集合中移除包含在指定集合中的所有元素8. void clear()•作用:清空集合中的所有元素9. boolean containsAll(Collection<?> collection)•参数:待查找的集合(collection)•返回值:如果当前集合包含指定集合中的所有元素,返回true,否则返回false•作用:判断当前集合是否包含指定集合中的所有元素10. boolean retainAll(Collection<?> collection)•参数:要保留的集合(collection)•返回值:如果当前集合发生变化,返回true,否则返回false •作用:保留当前集合中在指定集合中也存在的元素,移除其他元素11. Object[] toArray()•返回值:返回一个包含集合中所有元素的数组•作用:将集合转换为数组12. T[] toArray(T[] array)•参数:要转换的数组(array)•返回值:返回包含集合中所有元素的数组•作用:将集合转换为指定类型的数组总结通过上述详细介绍,我们了解了Collection接口中的常用方法及其作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档