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());  
      
        }  
      
    }  
  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/111testing/p/6399394.html
Copyright © 2011-2022 走看看