자바 8 은 stream 을 사용 하여 list 의 대상 속성 을 통합 합 니 다(중복 및 구 합)
하나의 List 에 있 는 대상 에 게 유일한 값 속성 을 중시 해 야 합 니 다.속성 구 화 는 대상 이 BillsNums 라 고 가정 하고 id,nums,sums 세 가지 속성 이 있 습 니 다.그 중에서 id 는 유일한 값 을 표시 하고 nums 와 sums 가 구 화 를 해 야 하 며 마지막 으로 한 부 를 유지 해 야 합 니 다.
예 를 들 어("s1",1,1),("s1",2,3),("s2",4,4)무 게 를 구하 고 무 게 를 빼 면("s1",3,4),("s2",4,4)이다.
대상 과 속성
class BillsNums {
private String id;
private int nums;
private int sums;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getNums() {
return nums;
}
public void setNums(int nums) {
this.nums = nums;
}
public int getSums() {
return sums;
}
public void setSums(int sums) {
this.sums = sums;
}
}
데이터
public static void main(String[] args) {
List<BillsNums> billsNumsList = new ArrayList<>();
BillsNums billsNums = new BillsNums();
billsNums.setId("1001");
billsNums.setNums(2);
billsNums.setSums(100);
billsNumsList.add(billsNums);
BillsNums billsNums2 = new BillsNums();
billsNums2.setId("1001");
billsNums2.setNums(3);
billsNums2.setSums(100);
billsNumsList.add(billsNums2);
List<BillsNums> result = merge(billsNumsList);
System.out.println("result:" + JSON.toJSONString(result, true));
}
합치다법 1:list 순환 구 화,무 거 운 제거
/**
* id nums, sums Java8
*/
public static List<BillsNums> merge(List<BillsNums> list) {
Map<String, BillsNums> map = new HashMap<>();
list.stream()
.forEach(billsNums -> {
BillsNums last = map.get(billsNums.getId());
if(null != last){
billsNums.setSums(billsNums.getSums() + last.getSums());
billsNums.setNums(billsNums.getNums() + last.getNums());
map.put(billsNums.getId(), billsNums );
}else{
map.put(billsNums.getId(), billsNums);
}
});
return map.values().stream().collect(Collectors.toList());
}
법 2:법 1 의 업그레이드 판
/**
* id nums, sums Java8
*/
public static List<BillsNums> merge(List<BillsNums> list) {
List<BillsNums> result = list.stream()
// id key, , BillsNums o1 o2 , o1,
// id , nums sums o1 o2, o1, o1
.collect(Collectors.toMap(BillsNums::getId, a -> a, (o1,o2)-> {
o1.setNums(o1.getNums() + o2.getNums());
o1.setSums(o1.getSums() + o2.getSums());
return o1;
})).values().stream().collect(Collectors.toList());
return result ;
}
결실자바 8 이 stream 을 사용 하여 list 의 대상 속성 을 합 친 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.자바 8 이 list 의 대상 속성 을 합 친 것 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 8 새 기능 내장 함수식 인터페이스 상세 정보Java 8 새로운 기능 내장 함수식 인터페이스 이전의 블로그 람다 표현식에서 자바 8이 제공하는 함수식 인터페이스를 언급한 적이 있다.이 글에서 자바 8의 가장 기본적인 함수식 인터페이스를 소개할 것이다 방법의 인...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.