在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
的代码,并展示您的努力和问题。