本篇为大家介绍一下javaset转list的方法,希望能在学习或工作中让大家有所说活。
面试的时候,经常会问到数据结构,比如数据和链表的区别,比如list如何去重,这就涉及到java 集合类的一些常用方法,数组和list和set如何互相转换。
某天读zookeeper的源码(zookeeper.java)时发现的,平时没有怎么注意:
private final ZKWatchManager watchManager; List<String> getDataWatches() { synchronized(watchManager.dataWatches) { List<String> rc = new ArrayList<String>(watchManager.dataWatches.keySet()); return rc; } } List<String> getExistWatches() { synchronized(watchManager.existWatches) { List<String> rc = new ArrayList<String>(watchManager.existWatches.keySet()); return rc; } } List<String> getChildWatches() { synchronized(watchManager.childWatches) { List<String> rc = new ArrayList<String>(watchManager.childWatches.keySet()); return rc; } }
上例中,set转list,直接将set扔入list就可以了,相反,list转set也可以这样做:Set result = new HashSet(list);
读到这里,就想到其它的是怎么转换的呢?
数组–>list转换
String[] userid = {"aa","bb","cc"}; List<String> userList = new ArrayList<String>(); Collections.addAll(userList, userid);
数组–>list 转换
String[] userid = {"aa","bb","cc"}; List<String> userList = Arrays.asList(userid); 另:Arrays.asList()返回一个受指定数组支持的固定大小的列表。所以不能做Add、Remove等操作。 List list = new ArrayList(Arrays.asList(userid));这样操作就可以了。
list–>数组转换List
<String> strList = new ArrayList<String>(); strList.add("aa"); strList.add("bb"); Object[] objs = strList.toArray();
参考资料:
【1】http://jingyan.baidu.com/article/86f4a73e607f2937d7526972.html