这是我的问题:
private List<Package<Par<K, F>>> packages;
public void createPackages(List<Par<K, F>> entrys) {
}
这应该从条目列表创建包,每个条目是一对;每个包将仅包含与第一个元素值相等的条目。 Package和Par是我拥有的其他类。
如果有人可以帮助我,我将非常感激。
答案 0 :(得分:2)
因此,基本上,您打算做的就是将所有内容打包到此Package类中,如果我没有误会。
我假设您的Package类看起来像这样
float()
或者至少有点相似
那么您应该能够像这样转换您的列表
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);
}
}
您所做的基本上是为列表中的每个[Packaged {[1=1]}, Packaged {[2=2, 2=3]}]
调用new Package(element)
。如果需要特殊类型的列表,例如在ArrayList和LinkedList之间进行转换,则可以使用element
代替toList。
希望这回答了您的问题。 干杯