过滤数组求第一个
Optional<WaterSensor> sensor = sensorService.getWaterSensors().stream().filter(s -> s.getId().equals(sensorId)).findFirst();
求list集合里面满足条件的个数
completeLogs.stream().filter(c -> c.getDate().equals(date) && (c.getGridChiefId() == g.getId())).count()
List转map
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person(1,"北京"));
personList.add(new Person(2,"上海"));
personList.add(new Person(3,"广州"));
personList.add(new Person(4,"福建"));
Map<Integer, String> map = personList.stream().collect(
Collectors.toMap(Person::getId, Person::getAddress)
);
System.out.println(map.toString());
}
非常详细的lambda表达式案例
List<Person> personList = new ArrayList<>();
personList.add(new Person(1,"北京", "张三"));
personList.add(new Person(2,"上海", "李四"));
personList.add(new Person(3,"广州", "王五"));
personList.add(new Person(4,"福建", "赵六"));
personList.add(new Person(5,"福建", "范冰冰"));
boolean matched = personList.stream().anyMatch(person -> person.id > 2);
System.out.println(matched);
Optional<Person> maxIdOfPerson = personList.stream().max((e1, e2) -> Integer.compare(e1.getId(), e2.getId()));
System.out.println("maxId:" + maxIdOfPerson.get().id);
List<String> address = personList.stream().map(person -> person.getName()).collect(Collectors.toList());
System.out.println("地址列表是" + address);
Map<String, Person> personMap = personList.stream().collect(Collectors.toMap((key->key.getName()),(value-> value)));
personMap.forEach((key, value) -> System.out.println(key));
long fjCount = personList.stream().filter(person -> person.getAddress().equals("福建")).count();
System.out.println("福建的个数是:" + fjCount);
Set<String> personSet = personList.stream().map(person -> person.getAddress()).distinct().collect(Collectors.toSet());
System.out.println("personSet集合是:" + personSet);
Optional<Person> optionals = personList.stream().filter(person -> person.getAddress().equals("福建")).findAny();
System.out.println(optionals.get().getName());
List<Person> listDesc = personList.stream().sorted((e1, e2) -> Integer.compare(e2.getId(), e1.getId())).collect(Collectors.toList());
listDesc.stream().forEach(person -> System.out.println("id降序人员" + person.getName()));
List<Person> display2PersonList = personList.stream().sorted((e1, e2) -> Integer.compare(e2.getId(), e1.getId())).limit(2).collect(Collectors.toList());
display2PersonList.stream().forEach(person -> System.out.println("id最高前两条人员名称" + person.getName()));
OptionalDouble averageId = personList.stream().mapToInt(c-> c.id).average();
System.out.println("平均id是: "+ averageId.getAsDouble());
Optional<Person> firstPerson = personList.stream().filter(person -> person.getAddress().equals("福建")).findFirst();
System.out.println(firstPerson.get().getName());
求map集合里面值最大的对象
Map<String, Integer> map = new HashMap<>();
map.put("火狐1",1);
map.put("火狐4",10);
map.put("火狐3",3);
map.put("火狐2",12);
map.put("火狐22",12);
map.put("火狐222",12);
Optional<Map.Entry<String, Integer>> maxGrade = map.entrySet().stream()
.filter(r -> r.getValue() != null)
.max(Comparator.comparingInt(Map.Entry::getValue));