通過索引從java.util.Collection獲取值的最佳方式是什麼?通過索引從集合中獲取價值的最佳方式
34
A
回答
2
通過使用函數對象[]指定者轉換集合到一個數組(對象[]一個)
17
一般而言,沒有很好的方法,因爲Collection
s的不能保證具有固定的指數。是的,你可以遍歷它們,這是如何ArrayArray(和其他函數)的工作。但是迭代次序不一定是固定的,如果你想索引到一個普通的集合,你可能做錯了什麼。索引List會更有意義。
46
你不應該。一個Collection
避免專門討論索引,因爲它可能對特定集合沒有意義。例如,List
意味着某種形式的排序,但Set
不會。
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 = 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]);
給我:
elem = Hello
elem = World
myCollection.toArray()[0] = Hello
要做到這一點,爲什麼呢?你不能只是迭代集合?
4
由於集合沒有「索引」或「訂單」的概念,您必須將您的集合包裝在列表中(new ArrayList(c)
)或使用c.toArray()
。
14
我同意馬修·富蘭琛的答案,只是想告訴你不能切換到列表(因爲一個圖書館的回報你一個集合)的情況下的選項例子:
List list = new ArrayList(theCollection);
list.get(5);
或者
Object[] list2 = theCollection.toArray();
doSomethingWith(list[2]);
如果你知道什麼是泛型,我也可以提供樣本。
編輯:這是另一個問題,原始集合的意圖和語義是什麼。
1
你明確希望List:
List接口提供了位置(索引)訪問列表元素的四個方法。列表(像Java數組)是從零開始的。
另外
注意,這些操作可以在時間成比例的一段 實施方式中,索引值執行(LinkedList類,例如)。因此,如果調用者不知道實現,那麼迭代> list中的元素通常更適合索引整個元素。
如果您需要的指數,以修改您的收藏時應注意以下問題列表提供了一個特殊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());
}
9
我同意這通常是一個壞主意。然而,Commons Collections了由指標所獲得的價值一個不錯的常規,如果你真的需要:
1
這會同樣方便簡單地您的收藏轉換成每當更新列表。但是如果你正在初始化,這就足夠了:
for(String i : collectionlist){
arraylist.add(i);
whateverIntID = arraylist.indexOf(i);
}
開明。
0
使用每個循環...
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. 從python中獲取價值的最佳方式?
- 2. 從索引獲取價值與索引
- 3. 的最佳方式,價值
- 4. 從單選按鈕獲取價值的最佳方法
- 5. 集成動態XML內容以獲取Google/Bing索引的最佳方式
- 6. 從C#中的gmail獲取通知的最佳方式
- 7. 通過迭代器獲取集合元素的「索引」
- 8. 從數據集中獲取單個值的最佳方式是什麼?
- 9. Javascript - 通過獲取方式獲得值通過獲取方法
- 10. 通過Jquery從電臺獲取價值
- 11. Magento - 扭轉集合的最佳方式
- 12. 通過使用ContactsContract獲取聯繫人的最佳方式
- 13. 從NHibernate獲取聚合結果的最佳方式是什麼?
- 14. 獲取PostgreSQL中唯一字段集合的最佳方法?
- 15. jQuery通過索引獲取數組值
- 16. 從對象中獲取項目集合的最佳實踐?
- 17. 什麼是獲得div的價值的最佳方式?
- 18. 從mongoDB通過RESTHeart for freeboard獲取最新價值
- 19. 從對象中獲得長期價值的最佳方式是什麼?
- 20. 如何通過索引訪問正式集合中的物品
- 21. 這是從XML獲取值的最佳方式:JAXB或DOM?
- 22. 從配置文件獲取值的最佳方式是什麼?
- 23. 從detailViewController獲取布爾值的最佳方式是什麼?
- 24. 通過javascript獲取價值使用PHP獲取價值
- 25. 通過最大值獲取數組索引?
- 26. 通過HTTP從服務器獲取對象的最佳方式是什麼?
- 27. 如何獲取通過提取添加到Backbone集合的項目的索引?
- 28. C#獲取OrderedDictionary中對象索引的最佳方式是什麼?
- 29. 從JDBC結果集中獲取XML的最佳方法
- 30. 獲取用戶登錄的價值的最佳方式是什麼?
嗨@butterchicken,我的情況是,我用LinkedHashMap中,我得到了鍵集(這是一套)。我發現這個帖子:http://stackoverflow.com/questions/2923856/is-the-order-guaranteed-for-the-return-of-keys-and-values-from-a-linkedhashmap-o that order這一套是有保證的。我應該還是不會嘮叨嗎? –
jobbert
2016-01-27 11:43:41
@jobbert你可以絕對迭代它。在這種情況下,你會得到一個`Set`,因爲這是`Map`接口的契約。 – butterchicken 2016-02-04 09:00:46