我使用Collections.sort(playersList);
对List
进行排序。所以,我认为playersList
现在已经排序了。但是我怎样才能获得列表的第一个元素? playersList[0]
不起作用。
答案 0 :(得分:79)
playersList.get(0)
Java限制了运算符多态性。所以你在get()
个对象上使用List
方法,而不是数组索引操作符([]
)
答案 1 :(得分:10)
您必须以与Java中的数组不同的方式访问列表。有关详细信息,请参阅List
界面的javadocs。
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)
时间内的最小元素。
答案 2 :(得分:3)
这取决于您的列表的类型,ArrayList
使用:
list.get(0);
用于LinkedList
:
list.getFirst();
如果你喜欢array
方法:
list.toArray()[0];
答案 3 :(得分:2)
使用Java 8流,您可以将列表转换为流,并使用.findFirst()
方法获取列表中的第一项。
List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"
.findFirst()
方法将返回Optional,其中可能包含或不包含字符串值(如果stringsList
为空,则可能不包含值)。
然后从Optional中解开项目,使用.get()
方法。
答案 4 :(得分:1)
Matthew's answer是正确的:
list.get(0);
做你想做的事:
list[0];
你必须等到Java 7 is released:
devoxx conference http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
这是Mark Reinhold关于Java 7的一个有趣的presentation
看起来parleys网站目前正在关闭,稍后再试:(
答案 5 :(得分:0)
如果您的集合不是List
(因此您无法使用get(int index)
),那么您可以使用迭代器:
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
答案 6 :(得分:0)
如果您只想获得列表的最小值,而不是对其进行排序,然后获取第一个元素(O(N log N)
),则可以使用min
在线性时间中执行此操作:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
起初看起来很粗糙,但看看之前的问题,你有一个List<String>
。简而言之:min
可以使用它。
对于长期答案:通用类型约束中的所有super
和extends
内容都是Josh Bloch称之为PECS原则(通常出现在Arnold的图片旁边 - 我不是开玩笑!)
Producer Extends,Consumer Super
它本质上使泛型更强大,因为约束更灵活,同时仍然保持类型安全(参见:what is the difference between ‘super’ and ‘extends’ in Java Generics)
答案 7 :(得分:0)
public class Main {
public static List<String> list = new ArrayList();
public static void main(String[] args) {
List<Integer> l = new ArrayList<>();
l.add(222);
l.add(100);
l.add(45);
l.add(415);
l.add(311);
l.sort(null);
System.out.println(l.get(0));
}
}
没有l.sort(null)返回222
使用l.sort(null)返回45