集合和数组之间的转换(面试题)
来源:互联网 发布:tonymoly的rd03是mac 编辑:程序博客网 时间:2024/04/28 02:37
1,面试题
package com.test;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;public class CollectionTest {public static void main(String[] args) {String[] array = {"c","b","d","a","b"};//List<String> list = Arrays.asList(array);List<String> list = new ArrayList<String>();Collections.addAll(list, array);list.add("e");System.out.println(list.toString());Set<String> set = new HashSet<>(list);set.add("f");System.out.println(set.toString());}}
代码如上,求输出结果
[c, b, d, a, b, e]
[f, d, e, b, c, a]
这个toString()是collection接口对toString的重写
这道题当时做错了,list.add("e")应该是添加到集合的末尾,set集合中的元素是按照hashcode来排序的。
2,这道题是我面试回来后自己写的例子,刚开始数组转list用了Arrays.asList(array),写的时候并没有报错,运行报Exception in thread "main" java.lang.UnsupportedOperationException,原因是
在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。
参考:http://blog.csdn.net/thunderous/article/details/3693362
当只对list进行查询的时候可以这么些,当进行添加删除操作时要用上面例子当中的方法。
3,各种list,set,map,array之间的转换
list转array
package com.test;import java.util.ArrayList;import java.util.List;public class ListIterator {public static void main(String[] args) {//将list转化为数组List<String> list = new ArrayList<>();list.add("a");list.add("b");String[] array = (String[]) list.toArray();System.out.println(array.toString());}}
运行报错:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at com.test.ListIterator.main(ListIterator.java:13)
原因是:不能将Object[] 转化为String[].转化的话只能是取出每一个元素再转化
Object[] objArray = list.toArray();String [] array = new String[list.size()];for(int i=0;i<objArray.length;i++){array[i]=objArray[i].toString();}
以上方法也适用于set,参考文章:http://www.cnblogs.com/ihou/archive/2012/05/10/2494578.html
4,list和set之间的转换:
package com.test;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class SetList {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("a");list.add("b");Set<String> set = new HashSet<String>(list);System.out.println(set.toString());List<String> list2 = new ArrayList<String>(set);System.out.println(list2.toString());}}
- 集合和数组之间的转换(面试题)
- 一道面试题引发的集合、数组、列表之间相互转换
- 数组和集合之间的转换
- 数组和集合之间的转换
- 面试题-Java基础-集合和数组
- 集合框架(一)续 向集合中添加一个集合、数组和List之间的相互转换、从集合中删除另一个集合所包含的元素
- 数组与collection(集合类)之间的转换
- 数组与集合之间的转换
- 集合与数组之间的相互转换
- 集合与数组之间的相互转换
- 集合之间及数组的相互转换
- Java集合面试题(01) Java中ArrayList和Vector之间的区别
- 面试题集合--关于数组
- Java:集合,数组之间转换
- Java的基本数据类型之间的转换以及面试题
- 集合和JSON之间的转换一
- 集合和数组之间的转化
- 上两道js面试题,关于数组字符串 之间的转化
- Spiral Matrix
- OpenCV-Python 安装
- 关于struts2的报告错误,spring注入问题,今天调式网站时直接出现了500错误,强悍的500
- Hadoop学习之编译eclipse插件
- ubuntu换源
- 集合和数组之间的转换(面试题)
- QT对话框中show和exec的区别
- Android之SharedPreferences的基本用法
- 安卓 多选按钮的代码
- Search a 2D Matrix
- 在指定的位置添加元素
- HDU 1106 排序
- 域控制器情况分析
- Android Service用法讲解与实例