インデックスでjava.util.Collectionから値を取得する最良の方法は何ですか? Collection
sはインデックスを固定していることが保証されていないとしてインデックスによるコレクションからの価値を得るための最良の方法
答えて
関数オブジェクト[]のtoArrayを一般に
([] Aオブジェクト)を使用して配列にコレクションを変換は、良い方法は、存在しません。はい、あなたはそれらを反復することができます。これはtoArray(そして他の関数)がどのように動作するかです。しかし、反復順序は必ずしも固定されているわけではありません。一般的なコレクションにインデックスを作成しようとしているなら、おそらく何か間違っているでしょう。 Listにインデックスを設定すると効果的です。
すべきではありません。 Collection
は、特定のコレクションに意味をなさない可能性があるため、特にインデックスに関する話題を避けています。たとえば、List
は何らかの形式の注文を意味しますが、Set
は注文しません。
elem = World
elem = Hello
myCollection.toArray()[0] = World
ながら:
myCollection = new ArrayList<String>();
myCollection.add("Hello");
myCollection.add("World");
for (String elem : myCollection) {
System.out.println("elem = " + elem);
}
System.out.println("myCollection.toArray()[0] = " + myCollection.toArray()[0]);
は私を与える:
Collection<String> myCollection = new HashSet<String>();
myCollection.add("Hello");
myCollection.add("World");
for (String elem : myCollection) {
System.out.println("elem = " + elem);
}
System.out.println("myCollection.toArray()[0] = " + myCollection.toArray()[0]);
は私与え
elem = Hello
elem = World
myCollection.toArray()[0] = Hello
なぜあなたはこれをしたいですか?あなたはコレクションを反復するだけではありませんか?
コレクションにはリスト(new ArrayList(c)
)をラップするか、c.toArray()
を使用する必要があります。コレクションには「インデックス」または「オーダー」という概念がないからです。
私は(ライブラリがあなたのコレクションを返すので)マシューFlaschenの答えに同意し、ちょうどあなたがリストに切り替えることはできません場合のオプションの例を示したかった:
List list = new ArrayList(theCollection);
list.get(5);
または
Object[] list2 = theCollection.toArray();
doSomethingWith(list[2]);
ジェネリックが何であるか知っていれば、そのサンプルも提供できます。
編集:元のコレクションの意図と意味は別です。
ライブラリ関数がCollectionを返す場合、そのコレクション内の要素の順序についてはあなたが保証しているとは思われません。おそらくライブラリ呼び出しは、あなたがこの種の仮定をしたくないので、コレクションを正確に返します。 – butterchicken
良い点。 OPは彼がどのような種類の図書館を使用しているかに関する十分な情報を共有していなかった。いくつかのライブラリは、具体的な実装の代わりにいくつかのスーパーインタフェースを返すベストプラクティスについて開発者が読んでいるため、Collectionを返します。ライブラリは、(AXIOMの場合のように)結果をループする以外の何かを許可するつもりがなければ、Iterableを返すことができます。 – akarnokd
あなたは決定的Listをしたい:
Listインタフェースは、リスト要素との位置(インデックス化)アクセスのための4つのメソッドを提供します。 リスト(Java配列など)はゼロベースです。
これらの動作は、(例えば、LinkedListのクラス)一部 実装のためにインデックス値に比例した時間で実行できるようにしても
注意。したがって、呼び出し元が の実装を知らない場合は、>リスト内の要素を反復処理することは、通常、それを介してインデックスを作成する方が望ましいです。
あなたのコレクションを修正するために、インデックスが必要な場合は、そのリストを注意してくださいあなたは、インデックスを取得することができ、特別なListIteratorを提供しています。私は、これは一般的に悪い考えであることに同意
List<String> names = Arrays.asList("Davide", "Francesco", "Angelocola");
ListIterator<String> i = names.listIterator();
while (i.hasNext()) {
System.out.format("[%d] %s\n", i.nextIndex(), i.next());
}
。しかし、Commons Collectionsはあなたが本当にする必要がある場合、インデックスで値を取得するための素敵なルーチンを持っていた:
更新されるたび単にあなたのコレクションがリストに変換するために、同じように便利です。しかし、初期化する場合は、これで十分です。
for(String i : collectionlist){
arraylist.add(i);
whateverIntID = arraylist.indexOf(i);
}
オープンにしてください。各ループの
使用...
ArrayList<Character> al=new ArrayList<>();
String input="hello";
for(int i=0;i<input.length();i++){
al.add(input.charAt(i));
}
for (Character ch : al) {
System.Out.println(ch)
}
- 1. オブジェクトから長い価値を得る最も良い方法は?
- 2. AndroidでMp3sからメタデータを取得するための最良の方法
- 3. OSGiバンドルコンテキストを取得するための最良の方法は?
- 4. 型のコレクションを作成してチェックするための最良の方法
- 5. 株価(財務)データを格納するための最良の方法
- 6. php domの掻き取り - 製品の価格を取得するための最良の方法
- 7. デルファイセットから最高の価値を得るには?
- 8. アイテムのコレクションで最大の価値を判断する方法は?
- 9. C#のリストボックスのインデックスからテキスト値を取得する方法
- 10. slient-sideから本物の価値を得る方法
- 11. Haskellの "価値"を得る方法
- 12. Infragisticsコンボの価値を得る方法
- 13. web_reg_save_paramから特定のインデックス値を取得する方法arrray
- 14. Java:ArrayListの任意のインデックスに格納する最良の方法
- 15. テキスト(char *)からデータを取得する最良の方法
- 16. ウェブビューからデータを取得する最良の方法
- 17. スプレッドシートをウェブデータベースに接続するための最良の方法
- 18. URLを減らすための最良の方法は、ボットにはインデックスが付けられています
- 19. ウェブアプリケーションで複数の値を「記憶」するための最良の方法
- 20. 2つのテーブルから選択して1つのテーブルから最高の価値を得る方法は?
- 21. Cのユーザからの入力を得るための最良の方法はどれですか?
- 22. 最小時間で60GBと10GBのサイズのsolrインデックスをマージするための最良の方法は?
- 23. Hibernate:コレクション内の要素を削除する最良の方法
- 24. Lucene .Net-キー/値がより複雑なインデックスを作成するための良い方法は何ですか?
- 25. SOAPリクエストが「自分の」HTMLページから来るようにするための最良の方法
- 26. のJavaを配布するための最良の方法は、
- 27. オフラインのウェブサイトを配信するための最良の方法
- 28. トピックの「ビュー」を格納するための最良の方法
- 29. 2d配列の特定のインデックスのインデックスを調べる最も良い方法
- 30. 作成されたオブジェクトのコレクションを維持するための最良の方法
は@butterchickenこんにちは、私の場合は私が(設定ある)キーセットを取得するのLinkedHashMapを使用することです。私はこの記事を見つけました:http://stackoverflow.com/questions/2923856/is-the-order-guaranteed-for-the-return-of-keys-and-values-from-a-linkedhashmap-oこのセットは保証されています。私はそれ以上のことをまだ分からないはずですか? –
jobbert
@jobbertあなたはそれを絶対に繰り返すことができます。 'Map'のインタフェースの契約であるため、この場合は' Set'を返します。 – butterchicken