gpt4 book ai didi

java - 对象列表中的列总和

转载 作者:行者123 更新时间:2023-12-02 02:51:55 25 4
gpt4 key购买 nike

我的问题如下:。我有对象列表。我需要添加列 x2 与相同的列 X3 并合并 X1 列。后来把旧的一排去掉了。请建议。

                Input:-

List<A> list = new ArrayList<>()
A A1 = new A(X1=111, X2=10, X3= '333')
A A2 = new A(X1=222, X2=20, X3= '333')
A A3 = new A(X1=333, X2=2, X3= '444')
A A4 = new A(X1=444, X2=5, X3= '444')
A A5 = new A(X1=666, X2=6, X3= '777')

list.add(A1).addd(A2).add(A3).add(A4).add(A4)

OutPut should be like below:-
{
Object A1 (list = {111,222}, x2= 30 , x3= '333')
Object A3 (list = {333,444}, x2= 7 , x3= '444')
Object A5 (list = {666}, x2= 6 , x3= '777')
}


public class A {
private long X1;
private long X2;
private String X3;
private List<Long> list;
}

最佳答案

尝试这个(java 8+),将 A 作为可变对象(我不喜欢):

        List<A> objects = new ArrayList<>();

A A1 = new A(111, 10, "333");
A A2 = new A(222, 20, "333");
A A22 = new A(222, 20, "333");
A A3 = new A(333, 2, "444");
A A4 = new A(444, 5, "444");
A A5 = new A(666, 6, "777");

objects.add(A1);
objects.add(A2);
objects.add(A22);
objects.add(A3);
objects.add(A4);
objects.add(A5);


List<A> output = objects
.stream()
.collect(Collectors.collectingAndThen(
Collectors.toMap(A::getX3, a -> {
a.getList().add(a.getX1());
return a;
}, (a, b) -> {
a.getList().addAll(b.getList());
a.setX2(a.getX2() + b.getX2());
return a;
}),
map -> new ArrayList(map.values())
));

System.out.println(output);

输出显示:

[A(X1=111, X2=50, X3=333, list=[111, 222, 222]),A(X1=333, X2=7, X3=444, list=[333, 444]),A(X1=666, X2=6, X3=777, list=[666])]

关于java - 对象列表中的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com