java集合类型转换:list,set,数组与map之间的转换

平常经常遇到java集合数据类型之间的转换,记录在此:

1. list转为set

Set set = new HashSet(new ArrayList());

2. set转为list

List list = new ArrayList(new HashSet());

3. 数组转为set

String[] array = {"a", "b", "c", "a"};
Set set = new HashSet(Arrays.asList(array));

此时,数组中的元素会去重。

4. set转数组

Set<String> set = new HashSet<String>(Arrays.asList("a","b", "c"));  
String[] strSet = new String[set.size()];  
set.toArray(strSet);  
System.out.println(Arrays.toString(strSet)); 

5. 数组转为定长list

String[] array = {"a", "b", "c"};
List list = Arrays.asList(array);

此时list中有三个元素,不能进行add/remove操作,否则会报“java.lang.UnsupportedOperationException”。
Arrays.asList()返回的是一个定长的List,不能转换为ArrayList,只能转换为AbstractList。这是因为asList()返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上,所以不支持remove,add方法。

6. 数组转为变长list

String[] array = {"a", "b", "c"};
List list = new LinkedList(Arrays.asList(array));

7. list转数组

List<String> list = Arrays.asList("a","b", "c");
System.out.println(list);
			
String[] arr = list.toArray(new String[0]);
System.out.println(Arrays.toString(arr));

8. map

        Map<String, String> map = new HashMap<String, String>();  
        map.put("name", "baoniu");  
        map.put("company", "taobao");  
        // 将键转化为Set
        Set<String> mapKeySet = map.keySet();  
        // 将值转化为Set    
        Set<String> mapValuesSet = new HashSet<String>(map.values());  
        // 将值转化为List    
        List<String> mapValuesList = new ArrayList<String>(map.values());  

发表评论

电子邮件地址不会被公开。 必填项已用*标注