如何 return 2 ArrayLists in java
How to return 2 ArrayLists in java
我需要制作一个可以 return
2 ArrayLists
的方法。
我已经阅读了一些答案并提出了一些选择:
return Pair(arrList 1, arrList 2);
这是更简单的选项,但我不知道它是否有效,而且我不知道如何从调用此方法的方法中的 Pair
中提取 ArrayLists
[=19] =]
尝试制作一个 class
来容纳这两个 ArrayList
。我不知道这是否可行,但我认为应该可以。
有谁知道这些选项中的任何一个是否可行,或者我是否可以使用任何其他选项?
创建第三个数组列表,将两个数组列表放入第三个数组列表并返回。
您可以使用 java.util.Map
作为 return 类型;
示例代码:
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);
创建一个 class 和 属性 的异构列表
public Class MyClass
{
public List<> list1;
public List<> list2;
}
Return 来自您的方法的 class 的新对象。如果列表是同质的,return 一个包含两者的列表。
注意:您的两种解决方案都是正确的。如果你做对了,它肯定会起作用。
我将介绍如何实施您提到的每种方法。
Apache Common Lang API 中有一个 Pair
class,从技术上讲,它不是 "standard" 库的一部分。您可以在 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
class,这基本上就是您的第二种方法试图做的事情。
这是来自 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
第三种选择是创建一个 class,它在两个 ArrayList
的相应索引中保存这对元素。例如,如果一个 ArrayList
包含姓名,第二个 ArrayList
包含生日,那么您可以创建一个包含姓名和生日的 class。现在用新 class.
的实例创建一个 ArrayList
这个解决方案取决于两个ArrayList
的数据之间的关系。如果数据不像我的名字和生日这样紧密相关,那么这种解决方案可能不合适。
我必须为 Delta 调试实现相同的双 ArrayList。
我使用了带有 getter 和 setter 的私有变量,以及一个在构造函数中使用长度初始化 ArrayList 的构造函数。
这是我的 class(它是私有的,因为它在使用它的更大的 class 内部):
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();
希望对您有所帮助!
我需要制作一个可以 return
2 ArrayLists
的方法。
我已经阅读了一些答案并提出了一些选择:
return Pair(arrList 1, arrList 2);
这是更简单的选项,但我不知道它是否有效,而且我不知道如何从调用此方法的方法中的
Pair
中提取ArrayLists
[=19] =]尝试制作一个
class
来容纳这两个ArrayList
。我不知道这是否可行,但我认为应该可以。
有谁知道这些选项中的任何一个是否可行,或者我是否可以使用任何其他选项?
创建第三个数组列表,将两个数组列表放入第三个数组列表并返回。
您可以使用 java.util.Map
作为 return 类型;
示例代码:
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);
创建一个 class 和 属性 的异构列表
public Class MyClass
{
public List<> list1;
public List<> list2;
}
Return 来自您的方法的 class 的新对象。如果列表是同质的,return 一个包含两者的列表。
注意:您的两种解决方案都是正确的。如果你做对了,它肯定会起作用。
我将介绍如何实施您提到的每种方法。
Apache Common Lang API 中有一个 Pair
class,从技术上讲,它不是 "standard" 库的一部分。您可以在 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
class,这基本上就是您的第二种方法试图做的事情。
这是来自 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
第三种选择是创建一个 class,它在两个 ArrayList
的相应索引中保存这对元素。例如,如果一个 ArrayList
包含姓名,第二个 ArrayList
包含生日,那么您可以创建一个包含姓名和生日的 class。现在用新 class.
ArrayList
这个解决方案取决于两个ArrayList
的数据之间的关系。如果数据不像我的名字和生日这样紧密相关,那么这种解决方案可能不合适。
我必须为 Delta 调试实现相同的双 ArrayList。
我使用了带有 getter 和 setter 的私有变量,以及一个在构造函数中使用长度初始化 ArrayList 的构造函数。
这是我的 class(它是私有的,因为它在使用它的更大的 class 内部):
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();
希望对您有所帮助!