一、java8官方文档
public final
class Collectors extends
Implementations of Collector that
implement various useful reduction operations, such as accumulating
elements into collections, summarizing elements according to
various criteria, etc.
The following are examples of using the predefined
collectors to perform common mutable reduction tasks:
//
Accumulate names into a List
List list =
people.stream().map(Person::getName).collect(Collectors.toList());
//
Accumulate names into a TreeSet
Set set =
people.stream().map(Person::getName).collect(Collectors.toCollection(TreeSet::new));
//
Convert elements to strings and concatenate them, separated by
commas
String joined =
things.stream().map(Object::toString).collect(Collectors.joining(",
"));
//
Compute sum of salaries of employee
int total =
employees.stream().collect(Collectors.summingInt(Employee::getSalary)));
//
Group employees by department
Map
List>
byDept=
employees.stream().collect(Collectors.groupingBy(Employee::getDepartment));
//
Compute sum of salaries by department
Map
Integer> totalByDept=
employees.stream().collect(Collectors.groupingBy(Employee::getDepartment,Collectors.summingInt(Employee::getSalary)));
//
Partition students into passing and failing
Map
List>
passingFailing =students.stream()
.collect(Collectors.partitioningBy(s ->
s.getGrade() >= PASS_THRESHOLD));
二、list转map实例
@Testpublic voidTestMap() {
Map map =newHashMap<>();List students =newArrayList<>();students.add(newStudent(1,"1"));students.add(newStudent(2,"2"));students.add(newStudent(3,"3"));students.add(newStudent(4,"4"));students.add(newStudent(5,"5"));students.add(newStudent(6,"6"));students.add(newStudent(1,"6"));//map =
students.stream().collect(Collectors.toMap(Student::getId, Student::getName);map = students.stream().collect(Collectors.toMap(Student::getId,Student::getName,(oldValue,newValue) -> newValue));System.out.println(map);Boolean flag =true;
if(Boolean.TRUE.equals(flag)) {
System.out.println(flag);}
}
这样写会如果map的key重复会报错,那么就需要替换成如下写法:
key重复时使用新值
map = students.stream().collect(Collectors.toMap(Student::getId,Student::getName,(oldValue,newValue) -> newValue));
参考:httpsdocs.oracle.comjavase8docsapijavautilstreamCollectors.html