如何在java中返回2个ArrayList
我需要创建一个可以如何在java中返回2个ArrayList,java,class,reference,return,keyvaluepair,Java,Class,Reference,Return,Keyvaluepair,我需要创建一个可以返回2ArrayLists的方法 我已经阅读了一些答案,并提出了一些选择: 返回对(arrlist1、arrlist2) 这是一个更简单的选项,但我不知道它是否有效,我也不知道如何从调用此方法的方法中的对中提取ArrayLists 尝试创建一个包含这两个数组列表的类。我不知道这是否行得通,但我认为应该行 有人知道这些选项中的任何一个是否有效,或者我是否可以使用任何其他选项吗?创建第三个arraylist,并将两个arraylist放在第三个arraylist中,然后将其返回。您
返回
2ArrayLists
的方法
我已经阅读了一些答案,并提出了一些选择:
返回对(arrlist1、arrlist2)代码>
这是一个更简单的选项,但我不知道它是否有效,我也不知道如何从调用此方法的方法中的对中提取ArrayLists
数组列表的类
。我不知道这是否行得通,但我认为应该行
有人知道这些选项中的任何一个是否有效,或者我是否可以使用任何其他选项吗?创建第三个arraylist,并将两个arraylist放在第三个arraylist中,然后将其返回。您可以使用
java.util.Map
作为返回类型
示例代码:
public Map<Integer, List> getLists() {
Map<Integer, List> listMap = new HashMap<Integer, List>();
List list1 = new ArrayList();
List list2 = new ArrayList();
// Fill your lists
listMap.put(1, list1);
listMap.put(2, list2);
return listMap;
}
// to get list from map
Map<Integer, List> lists = getLists();
List l1 = lists.get(1);
List l2 = lists.get(2);
publicmap getlist(){
Map listMap=newhashmap();
List list1=新的ArrayList();
List list2=新的ArrayList();
//填写你的清单
listMap.put(1,list1);
listMap.put(2,list2);
返回列表图;
}
//从地图中获取列表
映射列表=GetList();
listl1=lists.get(1);
listl2=lists.get(2);
创建一个属性都为异构列表的类
public Class MyClass
{
public List<> list1;
public List<> list2;
}
公共类MyClass
{
公开名单1;
公开名单2;
}
从方法返回类的新对象。如果列表是同质的,则返回一个同时包含这两者的列表。注意:两种解决方案都是正确的。如果你做得对,它肯定会起作用 我将介绍如何实现您提到的每种方法 apachecommonlangapi中有一个
Pair
类,从技术上讲,它不是“标准”库的一部分。你可以在下载
Pair
的文档是
您可以这样使用它:
// in the method
public Pair<ArrayList, ArrayList> yourMethod() {
...
return ImmutablePair.of(yourArrayList1, yourArrayList2);
}
// when you call the method
Pair<ArrayList, ArrayList> pair = yourMethod();
pair.getLeft(); // gets you the first array list
pair.getRight(); // gets you the second array list
// in the method
public Pair<ArrayList, ArrayList> yourMethod() {
...
return Pair.createPair(yourArrayList1, yourArrayList2);
}
// when you call the method
Pair<ArrayList, ArrayList> pair = yourMethod();
pair.getElement0(); // gets you the first array list
pair.getElement1(); // gets you the second array list
您可以这样使用它:
// in the method
public Pair<ArrayList, ArrayList> yourMethod() {
...
return ImmutablePair.of(yourArrayList1, yourArrayList2);
}
// when you call the method
Pair<ArrayList, ArrayList> pair = yourMethod();
pair.getLeft(); // gets you the first array list
pair.getRight(); // gets you the second array list
// in the method
public Pair<ArrayList, ArrayList> yourMethod() {
...
return Pair.createPair(yourArrayList1, yourArrayList2);
}
// when you call the method
Pair<ArrayList, ArrayList> pair = yourMethod();
pair.getElement0(); // gets you the first array list
pair.getElement1(); // gets you the second array list
//在方法中
公共方法(){
...
return Pair.createPair(yourArrayList 1,yourArrayList 2);
}
//当您调用该方法时
Pair Pair=yourMethod();
pair.getElement0();//获取第一个数组列表
pair.getElement1();//获取第二个数组列表
第三个选项是创建一个类,该类在两个数组列表的相应索引中保存一对元素。例如,如果一个ArrayList
包含姓名,而第二个ArrayList
包含生日,则可以创建一个包含姓名和生日的类。现在创建一个带有新类实例的ArrayList
此解决方案取决于两个ArrayList
s的数据之间的关系。如果数据没有我的姓名和生日示例那样密切相关,那么这种类型的解决方案可能不合适。我必须为增量调试实现相同的双ArrayList
我将私有变量与getter和setter以及一个构造函数一起使用,该构造函数使用构造函数中的长度初始化ArrayList
这是我的类(它是私有的,因为它位于使用它的更大类的内部):
私有类增量段{
私人ArrayList三角洲;
私人ArrayList nablas;
增量段(int dSize、int nSize){
增量=新阵列列表(dSize);
nablas=新阵列列表(nSize);
}
公共阵列列表getDeltas(){
返回三角洲;
}
公共阵列列表getNablas(){
返回纳布拉斯;
}
公共无效集合三角洲(阵列列表三角洲){
三角洲=_三角洲;
}
公共无效设置(ArrayList _nablas){
纳布拉斯=_纳布拉斯;
}
}
下面是我如何实例化它的:
private DeltaSegments getDeltaSegments(String str, int segments) {
ArrayList<String> deltas = new ArrayList<String>(segments);
ArrayList<String> nablas = new ArrayList<String>(segments);
// ... Add data to deltas/nablas here ... //
DeltaSegments ds = new DeltaSegments(segments, segments);
ds.setDeltas(deltas);
ds.setNablas(nablas);
return ds;
}
private DeltaSegments getDeltaSegments(字符串str,int段){
ArrayList Delta=新的ArrayList(段);
ArrayList nablas=新的ArrayList(段);
//…在此处向Delta/nablas添加数据//
DeltaSegments ds=新的DeltaSegments(段,段);
三角洲(三角洲);
D.塞特纳布拉斯(纳布拉斯);
返回ds;
}
要稍后访问它们,请执行以下操作:
DeltaSegments ds = getDeltaSegments(failingLine, n);
ArrayList<String> deltas = ds.getDeltas();
ArrayList<String> nablas = ds.getNablas();
DeltaSegments ds=getDeltaSegments(failingLine,n);
ArrayList deltas=ds.getDeltas();
ArrayList nablas=ds.getNablas();
希望这有帮助 对
类应该可以工作。只要阅读文档,就可以学习如何使用它。@4castle我已经开始使用第二个选项,你认为这也行吗?第二个选项也行,但是你基本上只是重新创建了Pair
类。为什么你有两个ArrayList?这两份清单包含哪些内容?数据是否以某种方式相关?它们是平行列表吗?如果是这种情况,那么您可以创建一个包含两条相关信息的类,然后创建一个包含这个新类的对象的ArrayList。public static void main(String[]args){ArrayList outer=new ArrayList();ArrayList inner=new ArrayList();inner.add(100);inner.add(200);outer.add(内部);outer.add(内部);System.out.println(外部);}@Agam您应该编辑您的问题,以便正确格式化代码。