list,set,数组之间相互转换

本文介绍了如何将数组转换为List(支持增删操作),以及如何进行List和Set的转换,包括toArray、stream和HashSet的使用。重点讲解了转换过程中的注意事项和最高效的方法。

1.数组转list

1.数组转list,转后不支持增删

 String[] strArray = new String[]{"1","2"};
 int[] aaa = new int[]{0,1,2,3,4};
 Character[] character = new Character[]{'1','2'};
 List list3 = Arrays.asList(strArray);
 // list3.add("3");
 System.out.println(list3.get(1));

结果为:2

这里我们要注意Arrays.asList(strArray)是把字符串类型的转为链表。如果是Arrays.asList(aaa)那么就是int型转为链表,是失败的。不支持int[]转链表(但是支持Integer[]转链表)注意:Arrays.asList()方法中是只支持泛型的,就是引用类型,所以int这种基本类型不支持。Character也是支持转链表。但是转为链表只支持用get去查,不支持删和加。

2.数组转list,转后支持增删

 String[] strArray = new String[]{"1","2"};
 int[] aaa = new int[]{0,1,2,3,4};
 Character[] character = new Character[]{'1','2'};
 List list3 = new ArrayList<>(Arrays.asList(strArray));
 list3.add("9");
 System.out.println(list3.get(2));

结果为:9

String[] string = new String[2];
List list4 = new ArrayList<>(Arrays.asList(string)) ;
list4.add("9");
System.out.println(list4);

结果为:[null, null, 9]

如果实行加操作

list4.set(0,1);

结果为:[1, null, 9];注意这里的(0,1)中的1为int也是成功的,set后的那个参数为object类型。

3.数组转list最高效率方法

String[] strArray = new String[2];
ArrayList<String> arrayList3 = new ArrayList<>(strArray.length);
Collections.addAll(arrayList3, strArray);
arrayList3.add("1");

结果为:[null, null, 1]

利用Collections方法的addAll(目标链表,数组)。首先要建立一个链表长度和数组长度一样

2.list转数组

1.toArray方法

List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
    list.add(i);
}
Integer[] array = list.toArray(new Integer[0]);
for(int i : array){
    System.out.println(i);
}

结果为:0,1,2,3,4

注意:list.toArray()方法也是只支持泛型的还有就是new Integer[0]值得思考一秒钟,为啥要Integer[0]

2.stream方法

String[] array2 = list1.stream().toArray(String[]::new);
System.out.println(Arrays.toString(array2));

数组的输出方法Arrays.toString

3.数组转set

    Set<String> set = new HashSet<>(Arrays.asList(str));
    
    //2. stream
    Set<String> set2 = Stream.of(str).collect(Collectors.toSet());

4.set转数组

    String[] array = set.toArray(new String[0]);
    //2. stream
    String[] array2 = set.stream().toArray(String[]::new);

5.list转set

Set<String> set = new HashSet<>(list);
​
Set<String> set2 = list.stream().collect(Collectors.toSet());

6.set转list

    List<String> list = new ArrayList<>(set);
    
    //2. stream 
    List<String> list2 = set.stream().collect(Collectors.toList());
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值