面试的时候,经常会问到数据结构,比如数据和链表的区别,比如list如何去重,这就涉及到java 集合类的一些常用方法,数组和list和set如何互相转换。

来自http://www.sohu.com/a/274265504_445013
某天读zookeeper的源码(zookeeper.java)时发现的,平时没有怎么注意:
private final ZKWatchManager watchManager; List getDataWatches() { synchronized(watchManager.dataWatches) { List rc = new ArrayList(watchManager.dataWatches.keySet()); return rc; } } List getExistWatches() { synchronized(watchManager.existWatches) { List rc = new ArrayList(watchManager.existWatches.keySet()); return rc; } } List getChildWatches() { synchronized(watchManager.childWatches) { List rc = new ArrayList(watchManager.childWatches.keySet()); return rc; } }
上例中,set转list,直接将set扔入list就可以了,相反,list转set也可以这样做:
Set result = new HashSet(list);
读到这里,就想到其它的是怎么转换的呢?
数组-->list转换
String[] userid = {"aa