int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
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 with l.sort(null)returned 45
9条答案
按热度按时间6za6bjd01#
Java有有限的操作符多态性。因此,在
List
对象上使用get()
方法,而不是数组索引操作符([]
)hmtdttj42#
在Java中,访问列表与访问数组有一点不同。有关
List
接口的详细信息,请参阅javadocs。但是,如果你想找到
playersList
中最小的元素,你不应该对它进行排序,然后得到第一个元素。与只在列表中搜索一次以找到最小元素相比,这运行得非常慢。举例来说:
上面的代码将查找
O(n)
中的最小元素,而不是O(n log n)
时间。l7wslrjt3#
这取决于您的列表是什么类型,对于
ArrayList
用途:对于
LinkedList
用途:如果你喜欢
array
方法:6qfn3psc4#
使用Java 8流,您可以将列表转换为流,并使用
.findFirst()
方法获取列表中的第一项。.findFirst()
方法将返回一个Optional,它可能包含也可能不包含字符串值(如果stringsList
为空,则可能不包含值)。然后使用
.get()
方法从Optional中展开该项。czfnxgou5#
从Java 21开始,只需使用
List.getFirst
:**注意:**如果列表为空则抛出
NoSuchElementException
。JEP 431: Sequenced Collections中的其他详细信息。
vu8f3i0k6#
马修的回答是正确的:
做你尝试过的事:
你必须等到Java 7 is released:
devoxx conference http://img718.imageshack.us/img718/11/capturadepantalla201003cg.png
下面是Mark Reinhold关于Java 7的一个有趣的presentation
看起来Parleys网站目前关闭,稍后再试:(
wvyml7n57#
如果你的集合不是一个
List
(因此你不能使用get(int index)
),那么你可以使用迭代器:hjqgdpho8#
如果你只想得到一个列表的最小值,而不是对它进行排序,然后得到第一个元素(
O(N log N)
),你可以使用min
在线性时间内完成:这看起来很粗糙,但是看看你之前的问题,你有一个
List<String>
。简而言之:min
在上面工作。对于冗长的回答:泛型类型约束中的所有
super
和extends
内容都是Josh Bloch称之为佩奇原则的内容(通常在Arnold的图片旁边显示--我不是开玩笑!)生产商扩展,消费者超级
它本质上使泛型更强大,因为约束更灵活,同时仍然保持类型安全(请参阅:what is the difference between ‘super’ and ‘extends’ in Java Generics)
kzipqqlq9#
如果没有l.sort(null),则返回222
with l.sort(null)returned 45