2017-07-30 36 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的數據之間的關係。如果數據與名稱和生日的例子沒有密切關係,那麼這種類型的解決方案可能不合適。