我用Collections.sort(playersList);
來排序List
。所以,我認爲playersList
現在已經排序。但是,我怎樣才能得到列表的第一個元素? playersList[0]
不起作用。如何從排序列表中獲取第一個元素?
回答
playersList.get(0)
Java具有有限的運算符多態性。因此,您在List
對象上使用get()
方法,而不是數組索引操作符([]
)
您必須訪問列表的方式與Java中的數組稍有不同。有關更多信息,請參見javadocs的List
接口。
playersList.get(0)
不過,如果你想找到playersList
最小的元素,你不應該進行排序,然後得到的第一個元素。與僅搜索列表中的一次以找到最小的元素相比,此運行速度非常緩慢。
例如:
int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
上面的代碼將在O(n)
代替O(n log n)
時間找到的最小元素。
這要看是什麼類型列表,對於ArrayList
使用:
list.get(0);
爲LinkedList
使用:
list.getFirst();
如果你喜歡array
方法:
不好的建議。 LinkedList實現了List接口,不需要使用特殊的方法(我會驚訝於兩者之間有任何性能差異)。並調用toArray()是浪費 - 您可能無故將該列表分配到一個新的數組中! – Kip 2010-03-23 20:57:58
@Kip,奇怪的評論;儘管LinkedList類沒有實現第一個和最後一個方法。如果您有充分的理由使用LinkedList,則不應僅僅因爲它們不在List接口中而使用它的方法。如果列表本身在排序後不需要,並且與OP要求的最接近,那麼數組示例可能非常有用。如果不知道相關源代碼的上下文,則無法確定該建議的有效性。 – rsp 2010-03-23 21:44:39
爲什麼排序後你是否需要列表很重要?在任何情況下(或者即使列表從未排序)調用toArray()只是爲了獲取第一個元素(可能)不必要地創建整個數組。 – Kip 2010-03-24 03:18:38
Matthew's answer是正確的:
list.get(0);
要做到你嘗試過什麼:
list[0];
,你將不得不等待,直到Java 7 is released:
devoxx conference http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
這裏是由馬克萊因霍爾德一個有趣的presentation關於Java 7
它看起來像parle YS網站目前下來,稍後再試:(
這似乎並沒有真正把它變成java 7 – Gunner 2012-02-10 20:28:39
如果您收藏不是List
(因此不能使用get(int index)
),那麼你可以使用迭代器:
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
如果你只是想要得到的,而不是分類整理,然後讓第一個元素(O(N log N)
),您可以用最低的清單,做線性時間使用min
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
這看起來在f粗糙首先,但看看你以前的問題,你有一個List<String>
。總之:min
適用於它。
對於長回答:所有super
和extends
東西在泛型類型的限制是什麼喬希布洛赫調用佩奇原則(旁邊通常呈現給阿諾德的照片 - 我不是在開玩笑!)
生產者延伸消費者超級
它實質上使仿製藥更強大,因爲制約更加靈活,同時仍保留類型安全(見:what is the difference between ‘super’ and ‘extends’ in Java Generics)
使用Java 8流,您可以將列表變成流,並使用.findFirst()
方法獲取列表中的第一項。
List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"
的.findFirst()
方法將返回Optional其可以或可以不包含一個字符串值(它可以不包含值,如果stringsList
爲空)。
然後打開項目從可選使用.get()
方法。
- 1. C#排序列表:如何獲取下一個元素?
- 2. 按第一個元素對元素列表排序,但如果按第二個元素排序則等於
- 3. 從列表中獲取第3個元素的第一個元素和第二個元素 - Haskell
- 4. 如何獲取laravel中的列表的第一個元素?
- 5. 如何在jsp中獲取列表的第一個元素
- 6. 如何使用tryPick獲取序列的第一個元素?
- 7. 如何獲取列表的第一個元素
- 8. 如何按字母順序排列列表中的第一個元素?
- 9. 從可排序列表中獲取所有元素屬性
- 10. 如何從Java中的枚舉中獲取第一個元素?
- 11. 從PDOStatement獲取第一個元素
- 12. Python:按每個子列表的第一個元素排序列表列表
- 13. 按第三個元素排序Python列表,然後按第一個元素排序?
- 14. 使用LINQ獲取第一個排序元素? (C#)
- 15. 軌控制器降序排列獲得的第一個元素
- 16. 如何從Jena SPAQL結果集中獲取第一個元素
- 17. 如何從第一個表中排序數據第二個表#
- 18. python如何從列表中刪除元素的排序列表?
- 19. 如何從有序列表中選擇一個列表元素?
- 20. 獲取字符串/列表中的第一個元素
- 21. Flex-獲取列表中的第一個可見元素
- 22. 獲取Grails列表中的第一個元素
- 23. 獲取列表的第一個元素慣用Groovy中
- 24. Python的排序()列表的第一個元素
- 25. 我不能夠獲取列表中的第一個值排序
- 26. 如何從鏈接列表中刪除第一個元素?
- 27. 如何獲得每個元素的第二元素列表
- 28. 如何從Python中的元組獲取第二個元素?
- 29. 按元素列表的第二個元素對列表進行排序
- 30. 如何從此JSON數據中的第二個元素獲取第一個值?
我徘徊爲什麼這樣的基本操作應該編程。爲什麼Java不提供只返回數組中最小值的函數? – Roman 2010-03-24 08:58:25
Roman,有這樣一個方法,Collections.min(http://java.sun.com/javase/7/docs/api/java/util/Collections.html#min%28java.util.Collection%29)。 – 2010-03-24 15:10:59