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

在java中将一个列表转换为另一个列表,java,Java,这是我的问题: private List<Package<Par<K, F>>> packages; public void createPackages(List<Par<K, F>> entrys) { } 私有列表包; public void createPackages(列表入口){ } 这应该是从条目列表创建包,每个条目都是一对;每个包将只包含与第一个元素值相等的条目。 包和PAR是我所拥有的其他类。 如果有人

这是我的问题:

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

public void createPackages(List<Par<K, F>> entrys) {     
}
私有列表包;
public void createPackages(列表入口){
}
这应该是从条目列表创建包,每个条目都是一对;每个包将只包含与第一个元素值相等的条目。 包和PAR是我所拥有的其他类。


如果有人能帮上忙,我将非常感激。

所以如果我没有误解的话,基本上你要做的就是把所有东西都打包到这个打包类中

我以为你的包裹课是这样的

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());
公共类包{
清单a;
公共包(列表a){
这个a=a;
}
@凌驾
公共字符串toString(){
返回“打包的{+a.toString()+”}”;
}
}
或者至少有点相似

然后你应该可以像这样转换你的列表

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());
Map test=l.stream().collect(Collectors.groupingBy(Pair::getKey));
List 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);
    }
}

公共类主{
公共静态void main(字符串[]args){
列表l=新的LinkedList();
l、 添加(新的一对(1,1));
l、 添加(新的一对(2,2));
l、 添加(新的一对(2,3));
系统输出打印LN(l);
Map test=l.stream().collect(Collectors.groupingBy(Pair::getKey));
List newList=test.values().stream().map(Package::new).collect(Collectors.toList());
System.out.println(newList);
}
}
这将给出以下输出
[Packaged{[1=1]},Packaged{[2=2,2=3]}]

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

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


有关更多信息:

到目前为止,您尝试了什么?您面临的问题是什么?您应该提供
软件包
Par
的代码,并展示您的努力和问题。