测试题15(答案详析)

   日期:2020-11-13     浏览:84    评论:0    
核心提示:1 如何实现数组和 List 之间的转换1.1 数组转List:使用Arrays.asList(array) 进行转换1.2 List 转数组:使用自带的 toArray()方法代码示例://list to arrayList<String> list = new ArrayList<String>();list.add("123");list.add("456");list.toArray();//array to listString[] array =

1 如何实现数组和 List 之间的转换

1.1 数组转List:使用Arrays.asList(array) 进行转换
1.2 List 转数组:使用自带的 toArray()方法

代码示例:

//list to array
List<String> list = new ArrayList<String>();
list.add("123");
list.add("456");
list.toArray();


//array to list
String[] array = new ArrayList<String>();
Arrays.asList(array);

2. 迭代器Iterator 是什么?

Iterator 提供遍历任何Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。

2.1 Iterator 怎么使用?有什么特点?

Iterator 使用代码如下:

List<String> list = new ArrayList();
Iterator<String> it = List.iterator();
while(it.hasNext()) { 
    String obj = it.next();
    System.out.println(obj);
}

Iterator 的特点是只能单项遍历,但是更安全,因为它可以确保在当前遍历的集合元素被更改的时候,就会抛出 ConcurrentModificationException 异常。

2.2 如何遍历边移除 Collection 中的元素?

边遍历边修改 Collection 的唯一正确方式是使用 Iterator.remove()方法,如下:

Iterator<Integer> it = list.iterator();
while(it.hasNext()){ 
   //do something
   it.remove();
}

一种常见的的错误代码:

for(Integer i :list) { 
    list.remove(i);
}

运行以上错误代码会报 ConcurrentModificationException 异常。这是因为当使用 foreach(for(Integer i : list)) 语句时,会自动生成一个 Iterator 来遍历该 list,但同时该list 正在被 Iterator.remove()修改。Java一般不允许一个线程在遍历Collection 时另外一个线程修改它。

2.3 Iterator 和ListIterator 有什么区别?
  1. Iterator 可以遍历 Set 和 List 集合,而 ListIterator 只能遍历LIst。
  2. Iterator 只能单向遍历,而 ListIterator 可以上双向遍历(向前/向后遍历)
  3. ListIterator 实现 Iterator 接口,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服