我需要制作一个return
2 ArrayLists
的方法。
我已经阅读了一些答案并提出了一些选择:
return Pair(arrList 1, arrList 2);
这是更容易的选项,但我不知道它是否有效,我不知道如何从调用此方法的方法中的ArrayLists
中提取Pair
尝试制作一个包含class
两个ArrayList
的{{1}}。我不知道这是否有效,但我认为应该这样做。
是否有人知道这些选项是否有效,或者我可以使用其他任何选项?
答案 0 :(得分:0)
创建第三个arraylist,并将两个arraylists放在第三个arraylist中并转换它。
答案 1 :(得分:0)
您可以使用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);
答案 2 :(得分:0)
创建一个包含属性列表
的类z
从您的方法返回类的新对象。如果列表是homo-genius retun,则列出两者。 注意:你的两个解决方案都是正确的,它肯定会起作用,如果你做对了:)
答案 3 :(得分:0)
我将讨论如何实施您提到的每种方法。
Apache Common Lang API中有一个Pair
类,技术上不属于“标准”库。您可以在http://commons.apache.org/proper/commons-lang/下载。
Pair
的文档是here。
你可以像这样使用它:
// 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
您还可以创建自己的Pair
课程,这实际上是您的第二种方法。
以下是this post的示例。
public class Pair<K, V> {
private final K element0;
private final V element1;
public static <K, V> Pair<K, V> createPair(K element0, V element1) {
return new Pair<K, V>(element0, element1);
}
public Pair(K element0, V element1) {
this.element0 = element0;
this.element1 = element1;
}
public K getElement0() {
return element0;
}
public V getElement1() {
return element1;
}
}
你可以像这样使用它:
// 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
答案 4 :(得分:0)
第三个选项是创建一个类,该类包含两个ArrayList
的相应索引中的元素对。例如,如果一个ArrayList
包含名称而第二个ArrayList
包含生日,那么您可以创建一个包含名称和生日的类。现在使用新类的实例创建一个ArrayList
。
此解决方案取决于两个ArrayList
的数据之间的关系。如果数据与我的名字和生日例子没有密切关系,那么这种解决方案可能不合适。
答案 5 :(得分:0)
我必须为 Delta 调试实现相同的双 ArrayList。
我将私有变量与 getter 和 setter 以及一个构造函数一起使用,该构造函数在构造函数中使用长度初始化 ArrayList。
这是我的类(它是私有的,因为它在使用它的更大的类中):
private class DeltaSegments {
private ArrayList<String> deltas;
private ArrayList<String> nablas;
DeltaSegments(int dSize, int nSize) {
deltas = new ArrayList<String>(dSize);
nablas = new ArrayList<String>(nSize);
}
public ArrayList<String> getDeltas() {
return deltas;
}
public ArrayList<String> getNablas() {
return nablas;
}
public void setDeltas(ArrayList<String> _deltas) {
deltas = _deltas;
}
public void setNablas(ArrayList<String> _nablas) {
nablas = _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;
}
以后访问它们:
DeltaSegments ds = getDeltaSegments(failingLine, n);
ArrayList<String> deltas = ds.getDeltas();
ArrayList<String> nablas = ds.getNablas();
希望这会有所帮助!