版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weisong530624687/article/details/79498528
29. foreach与正常for循环效率对比。
foreach与for如何选择:
数组结构的数据,建议使用普通for循环,它采用下标访问,检索速度很快,但是foreach性能也还可以。链表结构的数据,一般不要使用普通for循环获取数据,会依次检索,效率低,数据量很大时异常占用资源。
代码实例:
package com.ws.compareforeach;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class CompareForeachDemo {
public static void main(String[] args) {
//测试ArrayList
//结果(毫秒数)
// 584
// 484
// 461
// List<Integer> lists = new ArrayList<>();
//测试LinkedList
//结果(毫秒数)
// 7539
// 451
// 436
List<Integer> lists = new LinkedList();
for (int i = 0; i < 100000; i++) {
lists.add(i);
}
long time1 = System.currentTimeMillis();
long timeStart = System.currentTimeMillis();
for (int i = 0; i < lists.size(); i++) {
System.err.println(lists.get(i));
}
long time2 = System.currentTimeMillis();
for (Iterator iterator = lists.iterator(); iterator.hasNext();) {
Integer integer = (Integer) iterator.next();
System.err.println(integer);
}
long time3 = System.currentTimeMillis();
for (Integer integer : lists) {
System.err.println(integer);
}
long time4 = System.currentTimeMillis();
System.err.println((time2-time1));
System.err.println((time3-time2));
System.err.println((time4-time3));
}
}
30. 泛型常用特点,List<String>能否转为List<Object>。
能。但是List<Object>转List<String>不一定可行。
代码实例:
package com.ws.list;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
List<String> strList = new ArrayList<>();
List<Object> objList = new ArrayList<>();
strList.add("a");
strList.add("b");
//测试一:存入Object为Integer的对象,在转String的时候报错
//objList.add(new Integer(1));
//objList.add(new Integer(2));
//The method add(String) in the type List<String> is not applicable for the arguments (Object)
//strList.add(objList.get(0));
//测试二:存入Object为String的对象,在转String的时候可行
// objList.add("11");
// objList.add("22");
// strList.add((String) objList.get(0));
//测试三:存入Object为String/Integer的对象,在转String的时候
//(String) objList.get(0) 会报错,(String) objList.get(1)可行,为什么
//因为你objList获取的当前的值的类型决定了是否可以转换成String
//Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
objList.add(new Integer(1));
objList.add("11");
objList.add("22");
strList.add((String) objList.get(0));
objList.add(strList.get(0));
for (String str : strList) {
System.err.println(str);
}
for (Object object : objList) {
System.err.println(object);
}
}
}
其他文章参考:
https://www.cnblogs.com/ljxe/p/5521840.html
打赏
如果觉得我的文章对你有帮助,有钱就捧个钱场,没钱就捧个人场,欢迎点赞或转发 ,并请注明原出处,谢谢....