zoukankan      html  css  js  c++  java
  • java中 列表,集合,数组之间的转换

    java中 列表,集合,数组之间的转换

    java中 列表,集合,数组之间的转换

    java中 列表,集合,数组之间的转换

     List和Set都是接口,它们继承Collection(集合),集合里面任何数据类型都可以添加

    List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。

    数组 长度固定  可存储任何数据类型       集合 长度可变(包括:list,set)可存储任何数据类型

    列表 list   有序   长度可变   元素可重复     集set  无序   长度可变   元素不可重复

    将数组转化为一个列表时,程序员们经常这样做: 

    String[] arr = {"a","b","c", "d", "e"}; 

    List<String> list = Arrays.asList(arr);

    Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,

    而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、get()、contains()方法,

    但是没有增加元素的方法,所以它的大小是固定的,想要创建一个真正的ArrayList类,

    你应该这样做:

    String[] arr = {"a","b","c", "d", "e"}; 

    ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));  

    也可以这样做:

    for(int i=0; i<arry.length; i++){
    list.add(arry[i])
    }

    将一个数组列表转换为数组 

    1. String[] stringArray = { "a", "b", "c", "d", "e" };  
    2. ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));  
    3. String[] stringArr = new String[arrayList.size()];  ------------------定义数组必须先定义数组的长度,由于数组长度固定
    4. arrayList.toArray(stringArr);  
    5. for (String s : stringArr)  
    6.     System.out.println(s); 

    List转换为Array也可以这样处理:

    ArrayList<String> list=new ArrayList<String>();

    String[] strings = new String[list.size()]; ------------------定义数组必须先定义数组的长度,由于数组长度固定

    list.toArray(strings);

    反过来,如果要将数组转成List怎么办呢?如下:

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

    将一个数组转换为集(set) 

    1. Set<String> set = new HashSet<String>(Arrays.asList(stringArray));  
    2. System.out.println(set);  
    3. //[d, e, b, c, a]  

    将一个集(set) 转换为数组

    arry=set.toArry();
    arry=(String[])set.toArry(new String[set.size()]);

    下面是一段代码显示了 数组,列表,集合之间的转换

    复制代码
    package test;  
      
    import java.util.ArrayList;  
      
    import java.util.Arrays;  
      
    import java.util.HashSet;  
      
    import java.util.List;  
      
    import java.util.Set;  
      
    public class Test2 {  
        public static void main(String[] args) {  
      
            List list = new ArrayList();  
      
            list.add("a");  
      
            list.add("b");  
      
            list.add("c");  
      
            list.add("d");  
      
            // list.add(1);//会产生java.lang.ArrayStoreException异常  
      
            // 当list中的数据类型都一致时可以将list转化为数组  
      
            Object[] array = list.toArray();  
      
            System.out.println("从list转换成的对象数组长度为:" + array.length);  
      
            // 在转化为其它类型的数组时需要强制类型转换,并且,要使用带参数的toArray方法,参数为对象数组,  
      
            // 将list中的内容放入参数数组中,当参数数组的长度小于list的元素个数时,会自动扩充数组的长度以适应list的长度  
      
            String[] array1 = (String[]) list.toArray(new String[0]);  
      
            System.out.println("从list转换成的字符串数组长度为:" + array1.length);  
      
            // 分配一个长度与list的长度相等的字符串数组  
      
            String[] array2 = (String[]) list.toArray(new String[list.size()]);  
      
            System.out.println("从list转换成的字符串数组长度为:" + array2.length);  
      
            list.clear();  
      
            // 将数组转换成list  
      
            for (int i = 0; i < array.length; i++) {  
      
                list.add(array[i]);  
      
            }  
      
            System.out.println("将数组转换成list的元素个数为:" + list.size());  
      
            list.clear();  
      
            // 直接使用Arrays的asList方法  
      
            list = Arrays.asList(array);  
      
            System.out.println("将数组转换成list的元素个数为:" + list.size());  
      
            Set set = new HashSet();  
      
            set.add("a");  
      
            set.add("b");  
      
            // 将set转换为数组  
      
            array = set.toArray();  
      
            array1 = (String[]) set.toArray(new String[0]);  
      
            array2 = (String[]) set.toArray(new String[set.size()]);  
      
            System.out.println("从Set转换成的对象数组长度为:" + array.length);  
      
            System.out.println("从Set转换成的字符串数组长度为:" + array2.length);  
      
            // 数组转换成Set  
      
            // 将数组转换成List后,再用List构造Set  
      
            set = new HashSet(Arrays.asList(array));  
      
            System.out.println("将数组转换成Set的元素个数为:" + list.size());  
      
            // 将Set清空,然后把数组转换成的list全部add  
      
            set.clear();  
      
            set.addAll(Arrays.asList(array1));  
      
            System.out.println("将数组转换成Set的元素个数为:" + list.size());  
      
        }  
      
    }  

    from:http://www.cnblogs.com/111testing/p/6399394.html
  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/7082949.html
Copyright © 2011-2022 走看看