回答:
あなたがチェックした場合はAPIをするためにList
あなたは気づくでしょう、それは言います:
Interface List<E>
ビーイングinterface
それは(NOはインスタンス化できない手段でnew List()
も可能です)。
そのリンクを確認するとclass
、実装するesがいくつか見つかりますList
。
すべての既知の実装クラス:
AbstractList
、AbstractSequentialList
、ArrayList
、AttributeList
、CopyOnWriteArrayList
、LinkedList
、RoleList
、RoleUnresolvedList
、Stack
、Vector
それらはインスタンス化できます。それらのリンクを使用して、それらについて詳しく知る、IE:どちらがニーズにより適しているかを知る。
最も一般的に使用される3つはおそらく次のとおりです。
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
おまけ:次の
ように、を使用してArrays
class
、簡単に値でインスタンス化することもできます。
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
ただし、そのため、リストに要素を追加することはできませんfixed-size
。
ArrayList
、new ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
インターフェイスをインスタンス化することはできませんが、いくつかの実装があります:
JDK2
List<String> list = Arrays.asList("one", "two", "three");
JDK7
//diamond operator
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
JDK8
List<String> list = Stream.of("one", "two", "three").collect(Collectors.toList());
JDK9
// creates immutable lists, so you can't modify such list
List<String> immutableList = List.of("one", "two", "three");
// if we want mutable list we can copy content of immutable list
// to mutable one for instance via copy-constructor (which creates shallow copy)
List<String> mutableList = new ArrayList<>(List.of("one", "two", "three"));
さらに、Guavaのような他のライブラリによって提供される他の多くの方法があります。
List<String> list = Lists.newArrayList("one", "two", "three");
ArrayList<String>
などを使用する必要があります。
List<String>
インターフェースです。
これを使って:
import java.util.ArrayList;
...
List<String> supplierNames = new ArrayList<String>();
ほとんどの場合ArrayList
、シンプルにしたい-の実装List
JDKバージョン7より前
List<String> list = new ArrayList<String>();
JDK 7以降ではdiamond演算子を使用できます
List<String> list = new ArrayList<>();
詳細については、Oracleのドキュメント-コレクションをご覧ください。
使用するリストの種類に応じて、次のようなもの
List<String> supplierNames = new ArrayList<String>();
あなたが行くはずです。
Listはインターフェースで、ArrayListはListインターフェースの1つの実装です。ListインターフェースのJavaDocsを読むと、ニーズにより適した実装がさらに見つかることがあります。
念のため、この質問についてはまだ誰もが残っています。、私は、1人のまたは2つの新しいユーザ再び同じ質問をし、誰もが、その後伝えるを参照するので、ありませんあなたがそれを行うことができない、親愛なる慎重さは、はい、あなたが実際にすることができます- 、別にここで与えられたすべての答えから、私は追加情報を提供したいと思います行う、リストリスト=新しいリスト(); しかし、インターフェースのすべてのメソッドの実装を書くことを犠牲にして。概念は単純にList list = new List();ではありません。だが
List<Integer> list = new List<Integer>(){
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
.....など(すべてのメソッドを記述できません。)
これは匿名クラスの例です。誰かが言ったときに正しい、いいえ、あなたはインターフェースをインスタンス化することはできません、そしてそれは正しいです。しかし、あなたは決して言うことはできません、あなたは書くことができますList list = new List(); しかし、明らかにあなたはそれを行うことができ、それはあなたができないことを作るのが難しい声明です。
List
。むしろ、名前を持たず、を実装する新しいクラスを宣言し、List
実行時に、新しく宣言されたクラスの新しいオブジェクトを作成します。
私たちは、作成したソユーズにどのように変換するには:1つの問題簡素化するためX
にY
(例えばString
にしますInteger
)。それが構築するための簡単な機能を持っているような種類の変換でもオブジェクトである構築Map
、List
、Set
:
import io.thedocs.soyuz.to;
List<String> names = to.list("John", "Fedor");
それをチェックしてください-それは他の多くの便利な機能を持っています
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]