我一直只是一个人使用:
List<String> names = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我使用接口作为可移植性的类型名称,因此当我问这些问题时,我可以重新编写代码.
何时应该LinkedList使用,ArrayList反之亦然?
如果有的话,以下两个循环之间的性能差异是什么?
for (Object o: objectArrayList) {
o.DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
和
for (int i=0; i<objectArrayList.size(); i++) {
objectArrayList.get(i).DoSomething();
}
Run Code Online (Sandbox Code Playgroud) 在遍历ArrayList,HashMap和其他集合时,是否有任何性能测试结果可用于比较传统的for循环与Iterator?
或者我为什么要使用Iterator for循环,反之亦然?
在Java中迭代遍历列表是否更慢:
for (int i=0;i<list.size();i++) {
.. list.get(i)
}
Run Code Online (Sandbox Code Playgroud)
而不是:
for (Object o: list) {
... o
}
Run Code Online (Sandbox Code Playgroud) 我有这样的事情:
Map<String, String> myMap = ...;
for(String key : myMap.keySet()) {
System.out.println(key);
System.out.println(myMap.get(key));
}
Run Code Online (Sandbox Code Playgroud)
所以myMap.keySet()在foreach循环中调用一次?我想是的,但想要你的意见.
我想知道如果以这种方式使用foreach(myMap.keySet())会对性能产生影响,或者它等同于:
Set<String> keySet = myMap.keySet();
for (String key : keySet) {
...
}
Run Code Online (Sandbox Code Playgroud) 我运行了以下代码,但运行时有时会出现某种并发异常.
ArrayList<Mob> carriers = new ArrayList<Mob>();
ArrayList<Mob> mobs = new ArrayList<Mob>();
...
for (Mob carrier : carriers){
for (Mob mob : mobs){
checkInfections (carrier, mob);
}
}
Run Code Online (Sandbox Code Playgroud)
我重构它来解决并发问题,但它确实引出了一个问题.如果我将for构造更改为Iterator模式,性能会有差异吗?foreach构造和Iterator类之间的访问级别差异是什么?
java ×6
arraylist ×2
for-loop ×2
performance ×2
collections ×1
foreach ×1
iterator ×1
linked-list ×1
loops ×1
map ×1