2017-07-30 95 views
-1

我需要制定一个方法,可以。如何在java中返回2个ArrayLists

我看过一些答案,有几个选项想出了:

  1. return Pair(arrList 1, arrList 2);

    这是更容易的选择,但我不知道这是否会工作,我不知道如何提取从PairArrayLists在调用此方法

  2. 尝试进行class持有这两个ArrayList的方法。我不知道这是否会奏效,但我认为它应该。

是否有人知道这些选项中的任何一个是否有效,或者是否有其他选项可以使用?

+1

'Pair'类应该可以工作。请阅读文档以了解如何使用它。 – 4castle

+0

@ 4castle我已经开始了第二个选项,你认为那也可以吗? – Eddie

+2

第二个选项也可以,但是你基本上只是重新创建'Pair'类。 – 4castle

回答

0

创建财产都异类列表

public Class MyClass 
{ 
    public List<> list1; 
    public List<> list2; 
} 

返回从方法的类的新对象的类。如果该列表是同性天才,则重新列出包含两者的列表。 注意:你的两个解决方案都是正确的,它可以正常工作,如果你正确的做对了:)

0

创建第三个数组列表,并将数组列表放入第三个列表列表中,并将其放入该列表中。

+0

你能举个例子吗? – Eddie

+0

public static void main(String [] args){ArrayList > outer = new ArrayList >(); ArrayList inner = new ArrayList (); inner.add(100); inner.add(200); outer.add(inner); outer.add(inner); System.out.println(outer); } – Agam

+0

@Agam您应该编辑您的问题,以便您可以正确格式化代码。 –

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); 
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 
0

第三种选择是创建保持在对应所述两个ArrayList S的索引对元素的类。例如,如果一个ArrayList包含姓名,第二个ArrayList包含生日,则可以创建一个包含姓名和生日的班级。现在创建一个带有新类的实例的单个ArrayList

该解决方案取决于两个ArrayList的数据之间的关系。如果数据与名称和生日的例子没有密切关系,那么这种类型的解决方案可能不合适。