Java的foreach效率 [英] Java foreach efficiency
本文介绍了Java的foreach效率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Map< String,String> myMap = ...; (字符串键:myMap.keySet()){
System.out.println(key);
System.out.println(myMap.get(key));
$ b $ myMap.keySet()
在 foreach循环中调用一次?
我想是的,但是想要你的意见。
我想知道如果以这种方式使用foreach( myMap.keySet ()
)对性能有影响,或者相当于这个:
Set< String> keySet = myMap.keySet();
for(String key:keySet){
...
}
解决方案如果你想完全确定,那么编译它并反编译并比较。我做了这个与以下来源︰
public void test(){
Map< String,String> myMap = new HashMap< String,String>(); (字符串键:myMap.keySet()){
System.out.println(key);
System.out.println(myMap.get(key));
}
Set< String> keySet = myMap.keySet();
for(String key:keySet){
System.out.println(key);
System.out.println(myMap.get(key));
当我用 Jad ,我得到:
public void test()
{
Map myMap = new HashMap();
字符串键;
for Iterator iterator = myMap.keySet()。iterator(); iterator.hasNext(); System.out.println((String)myMap.get(key)))
{
key =(String)iterator.next();
System.out.println(key);
}
Set keySet = myMap.keySet();
字符串键;
for Iterator iterator1 = keySet.iterator(); iterator1.hasNext(); System.out.println((String)myMap.get(key)))
{
key =(字符串)iterator1.next();
System.out.println(key);
$ b $ p $所以你有答案。它用for循环形式调用一次。
I have something like this:
Map<String, String> myMap = ...;
for(String key : myMap.keySet()) {
System.out.println(key);
System.out.println(myMap.get(key));
}
So is myMap.keySet()
called once in the foreach loop?
I think it is, but want your opinion.
I would like to know if using foreach in this way (myMap.keySet()
) has a performance impact or it is equivalent to this:
Set<String> keySet = myMap.keySet();
for (String key : keySet) {
...
}
解决方案 If you want to be absolutely certain, then compile it both ways and decompile it and compare. I did this with the following source:
public void test() {
Map<String, String> myMap = new HashMap<String, String>();
for (String key : myMap.keySet()) {
System.out.println(key);
System.out.println(myMap.get(key));
}
Set<String> keySet = myMap.keySet();
for (String key : keySet) {
System.out.println(key);
System.out.println(myMap.get(key));
}
}
and when I decompiled the class file with Jad, I get:
public void test()
{
Map myMap = new HashMap();
String key;
for(Iterator iterator = myMap.keySet().iterator(); iterator.hasNext(); System.out.println((String)myMap.get(key)))
{
key = (String)iterator.next();
System.out.println(key);
}
Set keySet = myMap.keySet();
String key;
for(Iterator iterator1 = keySet.iterator(); iterator1.hasNext(); System.out.println((String)myMap.get(key)))
{
key = (String)iterator1.next();
System.out.println(key);
}
}
So there's your answer. It is called once with either for-loop form.
这篇关于Java的foreach效率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文