java 8 리스트 맵,그룹,필터 등 동작 을 신속하게 실현
Apple 대상 1 개 정의:
public class Apple {
private Integer id;
private String name;
private BigDecimal money;
private Integer num;
public Apple(Integer id, String name, BigDecimal money, Integer num) {
this.id = id;
this.name = name;
this.money = money;
this.num = num;
}
}
테스트 데이터 추가:
List<Apple> appleList = new ArrayList<>();// apple
Apple apple1 = new Apple(1," 1",new BigDecimal("3.25"),10);
Apple apple12 = new Apple(1," 2",new BigDecimal("1.35"),20);
Apple apple2 = new Apple(2," ",new BigDecimal("2.89"),30);
Apple apple3 = new Apple(3," ",new BigDecimal("9.99"),40);
appleList.add(apple1);
appleList.add(apple12);
appleList.add(apple2);
appleList.add(apple3);
1.조별List 안의 대상 요 소 는 특정한 속성 으로 그룹 을 나 눕 니 다.예 를 들 어 id 로 그룹 을 나 누 어 id 와 같은 것 을 함께 놓 습 니 다.
//List ID Map<Integer,List<Apple>>
Map<Integer, List<Apple>> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId));
System.err.println("groupBy:"+groupBy);
{1=[Apple{id=1, name=' 1', money=3.25, num=10}, Apple{id=1, name=' 2', money=1.35, num=20}], 2=[Apple{id=2, name=' ', money=2.89, num=30}], 3=[Apple{id=3, name=' ', money=9.99, num=40}]}
2、List 전환 지도id 는 key 이 고 apple 대상 은 value 입 니 다.이렇게 할 수 있 습 니 다.
/**
* List -> Map
* :
* toMap key, Duplicate key ....
* apple1,apple12 id 1。
* (k1,k2)->k1 , key, key1, key2
*/
Map<Integer, Apple> appleMap = appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1));
appleMap
{1=Apple{id=1, name=' 1', money=3.25, num=10}, 2=Apple{id=2, name=' ', money=2.89, num=30}, 3=Apple{id=3, name=' ', money=9.99, num=40}}
3.필터 필터집합 에서 조건 에 맞 는 요 소 를 걸 러 냅 니 다:
//
List<Apple> filterList = appleList.stream().filter(a -> a.getName().equals(" ")).collect(Collectors.toList());
System.err.println("filterList:"+filterList);
[Apple{id=2, name=' ', money=2.89, num=30}]
4.화 해 를 구하 다집합 중의 데 이 터 를 특정한 속성 에 따라 구 합 니 다.
//
BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
System.err.println("totalMoney:"+totalMoney); //totalMoney:17.48
5.스 트림 의 최대 최소 값 찾기Collectors.maxBy 와 Collectors.minBy 는 흐름 의 최대 또는 최소 값 을 계산 합 니 다.
Optional<Dish> maxDish = Dish.menu.stream().
collect(Collectors.maxBy(Comparator.comparing(Dish::getCalories)));
maxDish.ifPresent(System.out::println);
Optional<Dish> minDish = Dish.menu.stream().
collect(Collectors.minBy(Comparator.comparing(Dish::getCalories)));
minDish.ifPresent(System.out::println);
6.무 거 운 것 을 제거한다
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
// id
List<Person> unique = appleList.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new)
);
다음 표 는 Collectors 류 의 정적 공장 방법 을 보 여 줍 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Liquibase】DB 작성·테이블 정의 변경신규 스타터 프로젝트 작성 Liquibase와 MySQL 선택 application.properties에 DB 정보 넣기 MySQL에서 "testdatabase"라는 데이터베이스 만들기 빌드 종속성 추가 build....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.