2016-09-07 3 views
-3

への引数として、私は同じコレクションに適用できるかどうかを知りたいと思った可変数(ArrayListの)メソッド

public void returnString(String...args){ 
    //some code 
} 
// calling it 
returnString("abc","def","klm") 

のような文字列引数の可変数を処理するためのJavaでの方法があります。
そうでない場合、代替手段は何ですか。リストの配列は読めないので、これがどのように機能するのか不思議です。

//Sample code of what I am trying to do 
public void returnList(List...args){ 
    //some code 
} 
+1

実際に試しましたか? – Ian2thedv

+1

varargs機能は、コレクションを含むあらゆるタイプに適用できます。誰がそれはないと言いますか? – Beethoven

+0

varargs http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.htmlまたは可変アリティを持つメソッドhttp://www.java-tips.org/variable-arity -methods.html – c0der

答えて

1

私は、問題がどこにあるか知っている....しかし、ここでは一例ではありません。

import java.util.ArrayList; 
import java.util.List; 

public class Main { 

    public static void tryIt(List... lists) { 
    System.out.println("You insert " + lists.length + " lists."); 
    } 
    public static void main(String[] args) { 
     List<String> listStrings = new ArrayList<>(); 
     listStrings.add("TEST"); 
     List<Integer> listInteger = new ArrayList<>(); 
     listInteger.add(1); 
     tryIt(listStrings); 
     tryIt(listStrings, listInteger); 
    } 
} 

結果:配列の例に

You insert 1 lists. 
You insert 2 lists. 

はアクセス:

import java.util.ArrayList; 
import java.util.List; 

public class Main { 
    public static void tryIt(List... lists) { 
    System.out.println("You insert " + lists.length + " lists."); 
    if (lists.length>2) 
     for (Object obj : lists[2]) { 
     System.out.println(obj); 
     } 
    } 
    public static void main(String[] args) { 
    List<String> listStrings = new ArrayList<>(); 
    listStrings.add("TEST"); 
    List<Integer> listInteger = new ArrayList<>(); 
    listInteger.add(1); 
    List<String> anotherStringList = new ArrayList<>(); 
    anotherStringList.add("First value."); 
    anotherStringList.add("Second value."); 
    anotherStringList.add("Third value."); 
    tryIt(listStrings); 
    tryIt(listStrings, listInteger); 
    tryIt(listInteger, listStrings, anotherStringList); 
    } 
} 

出力:

You insert 1 lists. 
You insert 2 lists. 
You insert 3 lists. 
First value. 
Second value. 
Third value. 
+0

tryItメソッドで、特定のリストにアクセスする必要がある場合、どうすればいいでしょうか?リスト[2]? – Abhishek

+0

@Abhishek Checkアップデート。配列の通常の使用。 – Hrabosch

+0

ありがとうございます。それは私のために働く – Abhishek

1

メソッドが呼び出される場合

JLS §15.12.4.2においては、必ずしもn> 0の仮パラメータを有し、可変アリティ方法Mです。 mの最終的な仮パラメータは、ある種のTに対しては必ず型T []を持ち、mは必然的にk≥0の実引数式で呼び出される。

したがって、タイプはTの配列になります。あなたの最初の例ではreturnString(String...args)String[]です。 2番目の例のreturnList(List...args)では、List[]です。

もちろん、JavaでListの配列を持つことができます。あなたのメソッド本体argsの配列の代わりにListにしたい場合

さて、その後、可変引数はあなたを助けにはなりませんが、あなたはArrays.asList(args)でそのリストを構築することができます。

+0

http://stackoverflow.com/questions/8559092/create-an-array-of-arraylists – Abhishek

関連する問題