2017-07-30 50 views
-1

のメソッドを作成する必要があります。Javaで2つのArrayListを返す方法

私はいくつかの答えを読んで、いくつかのオプションを思い付いています

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

    これは簡単にオプションですが、私はそれが動作するかどうか知らない、と私はどのように知りませんこれらArrayListの両方を保持しているclassを作ってみましょう

  2. このメソッドを呼び出す方法でPairからArrayListsを抽出します。これがうまくいくかどうかはわかりませんが、私はそれをすべきだと思います。

これらのオプションのいずれかが機能するかどうか知っていますか、他にも使用できるオプションがありますか?

+1

「ペア」クラスが機能するはずです。それを使用する方法を学ぶために、ドキュメントを読んでください。 – 4castle

+0

@ 4castle私は第2の選択肢を開始しました。それもうまくいくと思いますか? – Eddie

+2

2つめのオプションも使えますが、基本的には 'Pair'クラスを再開発しています。 – 4castle

答えて

0

は、プロパティの両方異質リスト

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

戻るあなたの方法から、クラスの新しいオブジェクトを持つクラスを作成します。リストがホモジニアスであれば、両方を保持するリストを返す。 注:両方のソリューションが正しいことを確認します。正しく実行している場合:

0

3人目のアーリーリストを作成し、2人目のアーラリストを3人目に入れて、それを右に回してください。

+0

例を表示できますか? – Eddie

+0

public static void main(String [] args){ ArrayList >外部=新しい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

第三の選択肢は2 ArrayList秒のインデックスを、対応するの要素のペアを保持するクラスを作成することです。たとえば、ArrayListに名前が含まれ、2番目にに誕生日が含まれる場合は、名前と誕生日を含むクラスを作成できます。新しいクラスのインスタンスを持つ単一のArrayListを作成します。

この解決方法は、2つのArrayListのデータ間の関係によって決まります。私の名前や誕生日のようにデータが密接に関連していない場合、このタイプの解決法はおそらく適切ではありません。

関連する問題