`

集合与数组之间的转换

    博客分类:
  • java
 
阅读更多

转自:https://www.cnblogs.com/qiuyu-blog/p/4554658.html

 

数组和List、Set都可以存放多个元素,数组的特点是长度固定,访问速度非常快,元素类型单一;List的特点是长度可以动态增加,能够维护元素的次序,存入的所有元素都当做Object,允许元素重复;Set的特点是长度可以动态增加,能够保证元素不重复,存入的所有元素都当做Object。本节实例介绍Set、List和数组之间如何转换,将Set、List对象中的元素转换为数组,将数组转换为Set、List对象,转换过程中元素保持不变。

关键技术剖析:

实现List、Set和数组之间转换的关键技术点如下:

  List转换成数组可以使用List的toArray方法,返回一个Object数组。

  Set转换成数组可以使用Set的toArray方法,返回一个Object数组。

  如果List或Set中元素的类型都为A,那么可以使用带参数的toArray方法,得到类型为A的数组,具体语句是“(A[])set.toArray(new A[0])”。

  数组转换成List可以使用Arrays的asList静态方法,得到一个List。

  数组转化成Set时,需要先将数组转化成List再用List构造Set。

复制代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
public class TestCollectionToArray {
 
   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());
   }
}
复制代码

输出结果为:

  从list转换成的对象数组长度为:4

  从list转换成的字符串数组长度为:4

  从list转换成的字符串数组长度为:4

  将数组转换成list的元素个数为:4

  将数组转换成list的元素个数为:4

  从Set转换成的对象数组长度为:2

  从Set转换成的字符串数组长度为:2

  将数组转换成Set的元素个数为:4

  将数组转换成Set的元素个数为:4

源码分析:

l . 当list或Set中元素类型单一时,可以使用带参数的toArray方法,参数为目标数组对象,如果目标数组长度小于List或Set的元素个数时,在转化时自动把目标数组长度调整到L,如果目标数组长度大于L,转化时将List或Set的元素放到目标数组的前L个位置。转化后需要进行强制类型转换,才能得到目标数组。array1 = (String[]) set.toArray(new String[0]); array2 = (String[]) set.toArray(new String[set.size()]);

2. 数组转化为List或Set时需要借助Arrays的asList方法,它将数组转化成一个List,可以用这个List构造Set。Set set = new HashSet(Arrays.asList(array));

 

分享到:
评论

相关推荐

    winform 数组内容转换源码

    2. 集合转换:如将数组转换为`List&lt;T&gt;`或其他集合类型,这样可以方便地利用集合提供的方法进行数据操作。 3. 格式化数据:比如将数组中的数字转换为格式化的字符串,如保留两位小数的浮点数。 4. JSON或XML序列化...

    java基本类型与byte数组互相转换.pdf

    Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本类型与 byte 数组互相转换的相关知识点: 1. short 类型转换成 byte 数组 在 Java 中,short 类型是 16 位的整数类型,而 byte 数组是...

    将数组转换为.bin文件

    本文将详细介绍如何将数组转换为.bin文件以及这个过程中的相关知识点。 1. **二进制文件的基本概念**: 二进制文件是计算机系统用来存储信息的文件格式,其中的数据以二进制形式(0和1)表示。与文本文件(如.txt...

    java-对象数组转换为json

    首先,我们来看如何将一个Java对象数组转换成JSON格式。这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json.JSONArray; PricingRangeDTO[]...

    c语言数组访问及强制转换

    本文主要探讨了C语言中的数组访问机制及其与强制类型转换之间的关系。通过具体的编程示例,文章深入解析了一个特殊的问题:如何将一个指向一维整型数组的指针转化为能够被视作二维数组的指针,并成功传递给一个期望...

    泛型集合与数组应用老师找学生

    使用泛型集合的优点在于它能够在编译时避免类型转换的开销,并且可以防止不兼容类型的对象被添加到集合中,从而减少运行时错误。例如,在“老师找学生”的场景中,我们可以创建一个泛型集合List来存储所有的学生信息...

    Java中数组与集合的相互转换实现解析

    Java中数组与集合的相互转换实现解析非常重要,_arrays.asList() 方法可以将数组转换为集合,而 toArray() 方法可以将集合转换为数组。但是需要注意在使用这些方法时的注意事项,以免出现异常。

    java集合与数组的相同点和不同点

    以下是关于Java集合与数组的相同点和不同点的详细说明: 相同点: 1. 容器:无论是数组还是集合,它们都是容器,即它们都提供了一个存储数据的结构。它们都可以用来保存一组对象,使得我们能够以统一的方式处理这些...

    集合(list为例)与数组的互相转换。

    这里我们将详细探讨如何将集合(以ArrayList为例)与数组进行互相转换,并理解其中的关键点。 首先,集合(List)是Java集合框架的一部分,提供了动态增长的能力,可以方便地添加、删除元素。而数组则是固定大小的...

    将ILIST集合转换成String数组的方法

    ### 将ILIST集合转换成String数组的方法 在软件开发过程中,经常需要处理不同类型的数据结构之间的转换,尤其是在进行数据交互时。本篇文章将详细介绍如何将一个`ILIST`集合转换为`String`数组,这对于理解.NET环境...

    C#数组中List, Dictionary的相互转换问题

    将数组转换为List 将List转换为数组 将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dictionary转换为List 首先这里定义了一个“Student”的类,它有三个自动实现属性。 class ...

    易语言字节集与字节数组快速互转

    本文将深入探讨易语言中的字节集(ByteSet)与字节数组(ByteArray)之间的快速互转,以及相关的源码实现和应用。 字节集是易语言中用于存储一系列字节的数据类型,它通常用于处理二进制数据,如读写文件、网络通信...

    json数据前后台解析;json与对象、数组、集合之间转换源码

    1. JSON数组到Java集合:JSON数组转换为Java List或其他集合类型: ```java String jsonArrayString = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Jane\", \"age\":25}]"; List&lt;User&gt; users = mapper....

    winform 字符串和字节数组转换源码

    在Windows Forms(Winform)开发中,经常需要处理字符串与字节数组之间的转换,这是因为字符串在内存中是Unicode格式,而字节数组则可以用于数据传输、存储或者序列化。本文将深入探讨如何在C# Winform环境中进行...

    Java集合与数组区别简介及相互转换实例

    四、数组转换为集合的方法 数组可以使用Arrays.asList()方法转换为集合。注意:对于基本类型的数组,需要先转换成 wrapper 类型的数组。 ``` Integer[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4}; List list ...

    把实体类数组转换为DataTable C#

    在处理数据时,我们经常需要在不同的数据结构之间转换,例如从实体类数组转换为DataTable。DataTable是System.Data命名空间中的一个类,它是ADO.NET的一部分,常用于存储和操作数据集。本文将详细介绍如何在C#中实现...

    java实现列表、集合与数组之间转化的方法

    集合(Set)与数组的转化与列表类似。Set是一个不允许有重复元素的集合,常用的实现类有HashSet和TreeSet。将Set转换为数组,同样可以使用`toArray()`方法: ```java Set&lt;String&gt; set = new HashSet(); set.add("a");...

    Java对象、数组、集合转换为Json(Json转化为Java对象、数组、集合)

    这是本人写的一个基于JSON的完整项目,实现了Java对象、数组、集合转换为Json(Json转化为Java对象、数组、集合)。这是一个完整的项目,下载解压后直接导入MyEclipse/Eclipse中,运行com.demo.JSONDemo类即可看到效果...

    数组和list相互转换

    在实际开发过程中,我们经常需要将数组转换为列表或将列表转换为数组,以便更好地利用这两种数据结构的特点。接下来,我们将详细介绍如何在Java语言中实现数组与列表之间的相互转换。 ### 数组转列表 #### Java...

    易语言数组保存与恢复

    这里用到了两个关键函数:“CopyMemory”(或其易语言的等价操作)用于字节集与数组之间的转换。“CopyMemory”是一个系统API,它允许快速地复制内存块。在易语言中,我们通常使用“将 字节集 到 整数型”和“字节集...

Global site tag (gtag.js) - Google Analytics