gpt4 book ai didi

java - 在java中将一个列表转换为另一个列表

转载 作者:行者123 更新时间:2023-12-02 00:56:27 26 4
gpt4 key购买 nike

这是我的问题:

private List<Package<Par<K, F>>> packages;

public void createPackages(List<Par<K, F>> entrys) {
}

这应该从条目列表中创建包,每个条目都是一对;每个包将仅包含与其第一个元素具有相同值的条目。Package 和 Par 是我拥有的其他类。

如果有人可以提供帮助,我将非常感激。

最佳答案

所以基本上你想要做的就是将所有内容打包到这个 Package 类中,如果我没有误解的话。

我假设你的 Package 类看起来像这样

public class Package<T>{
List<T> a;
public Package(List<T> a){
this.a = a;
}

@Override
public String toString() {
return "Packaged {" +a.toString() + "}";
}
}

或者至少有些相似

那么你应该能够像这样转换你的列表

Map<Integer, List<Pair<Integer,Integer>>> test = l.stream().collect(Collectors.groupingBy(Pair::getKey));

List<Package<Pair<Integer,Integer>>> newList = test.values().stream().map(Package::new).collect(Collectors.toList());

我已经使用以下代码对此进行了测试

public class Main {
public static void main(String[] args) {
List<Pair<Integer,Integer>> l = new LinkedList<>();
l.add(new Pair(1,1));
l.add(new Pair(2,2));
l.add(new Pair(2,3));
System.out.println(l);
Map<Integer, List<Pair<Integer,Integer>>> test = l.stream().collect(Collectors.groupingBy(Pair::getKey));
List<Package<Pair<Integer,Integer>>> newList = test.values().stream().map(Package::new).collect(Collectors.toList());
System.out.println(newList);
}
}

这给出了以下输出[Packagged {[1=1]}, Packaged {[2=2, 2=3]}]

您所做的基本上是为列表中的每个元素调用new Package(element)。如果您想要特殊类型的列表,例如在 ArrayList 和 LinkedList 之间进行转换,您可以使用 .collect(Collectors.toCollection(ArrayList::new)) 而不是 toList。

希望这能回答您的问题。干杯

了解更多信息:https://www.baeldung.com/java-groupingby-collector

关于java - 在java中将一个列表转换为另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61308483/

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