本文共 1356 字,大约阅读时间需要 4 分钟。
第一点 ,ArrayList和LinkList的区别
ArrayList(数组结构): 优点:get和set调用花费常数时间,也就是查询的速度快; 缺点:新项的插入和现有项的删除代价昂贵,也就是添加删除的速度慢 LinkedList(链表结构): 优点:新项的插入和和现有项的删除开销很小,即添加和删除的速度快 缺点:对get和set的调用花费昂贵,不适合做查询 通过代码测试区别: public void test2(){ ArrayList arrayList = new ArrayList(); LinkedList linkedList = new LinkedList(); //给每个集合佳5000数据用来比较 for (int i = 0 ; i<50000; i++){ Object o = new object(); (0,o);//耗费时间多 linkedList.add(index:0,o);//耗费的时间少 } long end = System.currentTimeMillis(); System.out.println(’‘耗时:’’+(end-start)); } 第二点 Collection接口的remove()方法和Iterator接口的remove()方法区别? 一:性能方面 Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要从集合中一个一个遍历才能找到该对象; Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高 二:容错方面 在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会,不一致则会出现该异常 在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致 通过代码测试区别: public void test1(){ List list = new Arraylist(); for (int i= 0; i<10 ; i++){ list.add(i); } Iterator iterator = list.iterator(); while(iterator.hasNext()){ ();//不会出现异常 list.remove(o); } } 第三点 怎样将一个数组转成List,有什么方法 数组转list,可以使用Arrays.aslist(数组),例如: public void test3(){ //数组转LIST String[] str ={“zking”,“edu”,“snail”}; List str=new ArrayList(); str.add(“zking”); str.add(“edu”); str.add(“snail”); String[] strings = str.toArray(new String [str.size()]) }转载地址:http://wquwi.baihongyu.com/