Set,Map集合与数组互转

来源:互联网 发布:java异常处理设计 编辑:程序博客网 时间:2024/06/05 23:27
 
@org.junit.Test
public void test4()  {
Set<String> set=new HashSet<String>();
//数组转集合
set.addAll(Arrays.asList("aa","bb","cc","dd"));
//集合转数组
//方式1
String[] array = set.stream().toArray(String[]::new);
System.out.println(Arrays.toString(array));
//方式2
String[] array2 = set.toArray(new String[set.size()]);
System.out.println(Arrays.toString(array2));
//方式3 似乎只能转Object,遍历的Object值跟String一样
Object[] array3 = set.toArray();
// String[] array3 = (String[]) set.toArray();//报错不能转换
System.out.println(Arrays.toString(array3));
//其他TreeSet等一样
}




//Map与数组
@org.junit.Test
public void test5() {
Map<String, Integer> map=new HashMap<String, Integer>();
//目前没发现数组可以直接转map
map.put("aa", 1);
map.put("bb", 2);
map.put("cc", 3);
//键
Set<String> keySet = map.keySet();
//值
Collection<Integer> values = map.values();
//视图
Set<Entry<String, Integer>> entrySet = map.entrySet();
//map转数组(回到了set和list转数组的方法了)
//方式1
String[] array =  map.keySet().stream()
                            .toArray(String[]::new);
//方式2
String[] array2 = map.keySet().toArray(new String[map.size()]);
//对于entrySet,需要对键值分别转换
//key-->String[]
String[] array3 = entrySet.stream()
.map(Entry::getKey)
.toArray(String[]::new);
System.out.println(Arrays.toString(array3));
//values-->Integer[]
Integer[] array4 = entrySet.stream()
.map(Entry::getValue)
.toArray(Integer[]::new);
System.out.println(Arrays.toString(array4));
   }