2012-01-03 20 views
1

複数の出力を持つJAVA関数を作成するにはどうすればよいですか?以下のような 何か: - なしタプルJavaで複数の出力を持つ関数

private (ArrayList<Integer[]>, int indexes) sortObjects(ArrayList<Integer[]> arr) { 
//... 
} 
+1

複数の出力はどういう意味ですか?戻り値を参照していますか?この場合、代わりに新しいクラスを作成し、arraylist、intインデックスなどを入れてください。次に、新しく作成したクラスを返すように関数を変更します。 – Manish

+0

HashMapの使用はどうですか? –

答えて

1

あなたが、あなたはどちらか

  • は、複数のJavaは、Pythonのようではない機能
3

を作成ラッパー戻りオブジェクト

  • を作成することができますすることはできません。オブジェクトを作成し、すべての出力をそのオブジェクトにラップする必要があります。もう1つの解決策は何らかのコレクションであるかもしれませんが、前者はカプセル化が優れていると思います。

  • +0

    小さな例ですか? –

    +0

    ああ、例はこちらです:http://stackoverflow.com/questions/457629/how-to-return-multiple-objects-from-a-java-method –

    1

    戻り値としてオブジェクトを使用します。

    class SortedObjects { private ArrayList<Integer[]> _first; int _indexes; ...getter/setter/ctor... } 
    
    private SortedObjects sortObjects(ArrayList<Integer[]> arr) { ... } 
    
    1

    できません。

    単純な解決策は、オブジェクトの配列を返すことです。より堅牢なソリューションは、レスポンスを保持するクラスを作成し、getterを使用してコードから返されるレスポンスオブジェクトから個々の値を取得することです。

    1

    必要な情報ごとにメンバー変数を含むクラスを作成し、そのクラスのオブジェクトを戻す必要があります。

    1

    もう1つの方法は、コレクションをラップするオブジェクトを使用することです。

    class SortableCollection { 
        final List<Integer[]> tables = ... 
        int indexes = -1; 
    
        public void sortObjects() { 
         // perform sort on tables. 
         indexes = ... 
        } 
    } 
    

    可変オブジェクトで動作するため、引数も戻り値もありません。

    2

    場合によっては、メソッド引数を使用して結果値を処理することができます。あなたの場合、結果の一部はリストです(破壊的に更新される可能性があります)。だから、あなたのメソッドシグネチャを次のような形式に変更することができます:

    private int sortObjects(ArrayList<Integer[]> input, ArrayList<Integer[]> result) { 
        int res = 0; 
        for (Integer[] ints : input) { 
        if (condition(ints) { 
         result.add(calculatedValue); 
         res++ 
        } 
        } 
        return res; 
    } 
    
    関連する問題