zoukankan      html  css  js  c++  java
  • array、list和set相互转化的方法

    这里总结一下Array、List和Set相互转化的方法。

    Array转化为List

    将Array转化为List是使用Arrays.asList()方法。

    String[] arr= new String[]{"yanggb1", "yanggb2", "yanggb3"};
    List list = Arrays.asList(arr);
    
    list.add("yanggb4"); // not ok
    list.remove("yanggb2"); // not ok

    要注意的是,Arrays.asList()方法的返回对象是一个Arrays内部类,并没有实现集合的修改方法。因此转化后的List并不能添加新元素或删除元素,会报错。

    实际上,Arrays.asList()方法体现的是适配器模式,只是转换接口,而后台的数据仍是数组。这就意味着,如果对转换后的list中的元素进行修改,修改的结果会反映到原来的数组中,因为操作的实际上是原来的数组。

    Array转Set

    将Array转Set是使用Set集合的构造方法。

    String[] arr = new String[]{"yanggb1", "yanggb2", "yanggb3"};
    Set<String> set = new HashSet<>(Arrays.asList(arr));
    
    set.add(
    "yanggb4"); // ok set.remove("yanggb2"); // ok

    转换成Set集合之后可以添加元素或删除元素,因为是调用构造函数new出来的一个HashSet。

    另外要注意的是,对转换后的Set集合进行的操作并不会影响到原来的Array。

    System.out.println(set); // [yanggb3, yanggb1, yanggb4]
    System.out.println(arr[2]); // yanggb3

    也可以看到,这种方式转换出来的Set相对原来的的数据来说是倒序的。

    List转Set

    将List转Set同样是使用Set集合的构造方法。

    String[] arr = new String[]{"yanggb1", "yanggb2", "yanggb3"};
    List<String> list = Arrays.asList(arr);
    Set<String> set = new HashSet(list);

    Set转List

    将Set转List也可以使用List的构造方法。

    String[] arr = new String[]{"yanggb1", "yanggb2", "yanggb3"};
    Set<String> set = new HashSet<>(Arrays.asList(arr));
    List<String> list = new ArrayList<>(set);

    List或Set转Array

    List或Set转Array可以使用Collection.toArray()方法。

    String[] arr = new String[]{"yanggb1", "yanggb2", "yanggb3"};
    List<String> list = Arrays.asList(arr);
    Set<String> set = new HashSet(list);
    String[] arr1 = list.toArray(new String[list.size()]);
    String[] arr2 = set.toArray(new String[set.size()]);

    这里要注意的是,调用Collection.toArray(T[] t)方法的集合需要有指定其中元素的具体类型,否则会出现类型转换无效的情况(编译直接报错),这时候需要强行转化才可以。

    String[] arr = new String[]{"yanggb1", "yanggb2", "yanggb3"};
    List list = Arrays.asList(arr);
    Set set = new HashSet(list);
    String[] arr1 = (String[])list.toArray();
    String[] arr2 = (String[])set.toArray();

    另外要注意的是,使用Collection.toArray()转换出来的数组是一个新的数组,不会影响到原来的数组。

    "有些人明明看起来很友善,却总是独来独往。"

  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/yanggb/p/11765021.html
Copyright © 2011-2022 走看看