`

Java集合对象和数组对象的转换

 
阅读更多

在开发中,我们经常需要将集合对象(List,Set)转换为数组对象,或者将数组对象转换为集合对象。Java提供了相互转换的工具,但是我们使用的时候需要注意,不能乱用滥用。

1、数组对象转换为集合对象

    最暴力的方式是new一个集合对象,然后遍历数组,依次将数组中的元素放入到新的集合中,但是这样做显然过于麻烦。Java中有一个工具类Arrays类,提供一个方法asList()可以直接将数组转换为List集合。但是一定要注意,Arrays.asList(T... a)返回的是一个固定长度的ArrayList,是不能对返回的list进行add或者remove等操作的,因为返回的并不是java.util.ArrayList对象,是java.util.Arrays.ArrayList对象,是Arrays类的内部类。查看源码可以知道如果对该类进行add等操作,是要抛出异常的。该类的定义是起到一个桥梁作用,如果我们需要对转换的List集合进行修改操作,我们可以通过List<T> list = new ArrayList<T>(Arrays.asList(array));的方式,这样产生的list是觉得可以修改的。代码实现如下:

Java代码 复制代码 收藏代码
  1. String[] arrStr = {"a","b","c"};   
  2.   
  3. List<String> list1 = Arrays.asList(arrStr);   
  4.   
  5. List<String> list2 = new ArrayList<String>(Arrays.asList(arrStr));  
String[] arrStr = {"a","b","c"};

List<String> list1 = Arrays.asList(arrStr);

List<String> list2 = new ArrayList<String>(Arrays.asList(arrStr));

     结论:如果我们需要将数组转换为可修改的集合List就使用List<T> list = new ArrayList<T>(Arrays.asList(array));如果我们对转换的集合不修改就直接使用List list = Arrays.asList(array);

 

2、集合对象转换为数组对象

    这个就简单了一常用了,直接使用List接口的toArray方法。需要注意的是List有两个重载的toArray方法,第一个List.toArray()返回Object[],第二个List.toArray(T[] a)返回T[].那到底使用哪个呢,两种方法有什么区别呢?第一种返回的是Object[]类型,如果我们想要转换的数组的类型不是Object,那就需要向下转型,但是向下转型会导致类型不兼容,所以会抛出异常,但是我们可以遍历Object[]数组,让后将数组中的每一个元素进行类型转换,这样就不会类型转换异常。通常我们使用带参数的方法,这样就可以通过泛型,返回特定类型的数组,就不用再依次转换了。比如我们将List<String>转换为String[],我们可以通过下面的代码实现:

Java代码 复制代码 收藏代码
  1. List<String> listStr = new ArrayList<String>();   
  2.   
  3. listStr.add("one");   
  4.   
  5. listStr.add("two");   
  6.   
  7. String[] arrStr1 = listStr.toArray(new String[] {});   
  8.   
  9. String[] arrStr2 = listStr.toArray(arrStr1);   
  10.   
  11. String[] arrStr3 = (String[]) listStr.toArray();//这样是不行的。不能直接将Object[]转换为String[]  
List<String> listStr = new ArrayList<String>();

listStr.add("one");

listStr.add("two");

String[] arrStr1 = listStr.toArray(new String[] {});

String[] arrStr2 = listStr.toArray(arrStr1);

String[] arrStr3 = (String[]) listStr.toArray();//这样是不行的。不能直接将Object[]转换为String[]

     结论:将集合转换为数组,最好使用toArray(T[] t)方法返回指定类型的数组。

3、判断某个元素是否属于集合或者数组

    对于集合对象,提供了直接使用的方法。可以通过contailns方法判断。当然也可以自己使用最暴力的方式,遍历集合中的所有元素。

    对于数组对象,没有直接使用的方法,我们可以使用最暴力的方式,遍历数组,但是显然这样做不优雅。所以我们可以借助上面说的现将数组对象转换为集合对象,然后使用集合的contains方法。如果我们只是想判断特定元素是否存在于数组对象中,不对原数据进行修改,那么就可以直接使用Arrays.asList()方法,生成一个固定大小的List,然后直接使用contains方法,具体代码如下:

Java代码 复制代码 收藏代码
  1. List<String> listStr = new ArrayList<String>();   
  2.   
  3. listStr.add("a");   
  4.   
  5. listStr.add("b");   
  6.   
  7. listStr.add("c");   
  8.   
  9. boolean result1 = listStr.contains("d");//false   
  10.   
  11. String[] arrStr= {"a","b","c"};   
  12.   
  13. boolean result2 = Arrays.asList(arrStr).contains("a");//true  
分享到:
评论

相关推荐

    java 集合和数组的详细总结(并随着讲解带9个例子)

    Java集合和数组是Java编程语言中的基础数据结构,它们用于存储和管理数据。数组是一种简单的数据结构,可以存储同类型的元素序列,而集合是Java集合框架的核心部分,提供了更高级的数据管理和操作功能。 ### 数组 ...

    java字符串和数组基础共21页.pdf.zip

    在Java中,字符串和数组的相互转换也常常被讨论。例如,可以使用`split()`方法将字符串分割成字符数组,而`join()`方法则能将数组元素组合成一个字符串。此外,`toString()`方法可以帮助我们将数组转换为可读的字符...

    java 集合部分笔记

    - **集合和数组的区别**:集合只能保存对象,而数组可以保存基本类型和对象。集合提供了更灵活的数据管理方式,例如动态扩容和多样化数据结构。 - **集合的分类**:Java集合主要分为两大类,即Collection和Map。...

    Java字符串和数组

    在Java编程语言中,字符串(String)和数组(Array)是两种非常基础且重要的数据结构。它们在各种场景下都有着广泛的应用,比如数据存储、处理和传递等。本文将深入探讨Java中的字符串与数组,以及它们在实际开发中的...

    java集合使用大全

    * 相同点:类集和数组中存放的元素都是实例对象 * 不同点:类集的长度可以随意扩展,而数组的长度是固定的 类集的使用注意: * 在程序中,如果只声明类集对象,而没有实例化该类集对象,则无法使用该类集对象 * 类...

    Java集合框架学习笔记

    `Collections`和`Arrays`工具类提供了许多静态方法,用于操作集合和数组,如排序、查找、填充等。 总的来说,Java集合框架是一个强大的工具,它简化了数据存储和操作,通过接口和实现类的层次结构提供了高度的灵活...

    java 集合

    Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一组统一的接口和类。集合的概念是面向对象编程中用来组织数据的重要工具,它允许我们存储一组对象,根据需要进行添加、删除、修改...

    java集合框架全面进阶

    6. **工具类**:Collections和Arrays类提供了很多实用的静态方法,如排序、复制、填充集合和数组,以及集合与数组之间的转换。此外,Stream API的引入为集合操作提供了更简洁的函数式编程方式。 7. **并发处理**:...

    json-java对象转换包

    - JSON支持两种主要结构:对象(以花括号 `{}` 包裹的键值对集合)和数组(以方括号 `[]` 包含的有序元素列表)。 2. **json-lib库** - json-lib是一个开源的Java库,它提供了一套完整的API,使得Java开发者可以...

    2023年Java集合知识测试B.doc

    本资源摘要信息涵盖了Java集合知识的多个方面,包括集合和数组的区别、Collection接口的方法、ArrayList和LinkedList的特点、队列的特点、泛型的使用等。 1. 集合和数组的区别 集合和数组是Java中两种常用的数据...

    JAVA 区分集合和数组

    JAVA 区分集合和数组 Java 中的集合和数组是两个不同的概念,它们之间有着明显的区别。了解它们之间的区别对于编程实践非常重要。 数组 数组是 Java 语言内置的数据类型,它是一个线性的序列,所有元素可以快速...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含嵌套的对象和数组。下面我们将详细介绍如何使用Jackson库来实现这个功能,因为Jackson对于处理复杂的JSON结构有很好的支持。 首先,确保你已经添加了...

    Java语言数据类型类和数组对象PPT教案学习.pptx

    Java语言中的数据类型类是Java为每种基本数据类型提供的封装类,...以上就是关于Java语言数据类型类和数组对象的一些基础知识,它们是Java编程中不可或缺的部分,理解和掌握这些内容对于编写高效、健壮的代码至关重要。

    JSON字符串和java对象的相互转换

    在实际项目中,我们可能遇到嵌套的对象和数组,这时可以使用`@SerializedName`注解来指定JSON字段名,或者创建对应的嵌套类。对于数组,可以使用List或其他集合类型来表示。 例如,如果有如下JSON: ```json { ...

    好用的xStream XML和JAVA对象互相转换的简单示例

    XStream还提供了许多高级特性,比如自定义字段映射、处理集合和数组、处理日期和时间、以及安全配置等。例如,如果你不希望某个字段出现在XML中,可以通过`@XStreamOmitField`注解来实现: ```java public class ...

    gson 2.7 用于转换Java对象和Json对象

    6. **集合和数组处理**:Gson可以轻松处理Java集合和数组,包括List、Set、Map等,以及多维数组。 7. **复杂类型支持**:Gson可以处理嵌套的Java对象和复杂的JSON结构,包括泛型、枚举、匿名类等。 8. **流式API**...

    Java集合和数组的区别

    Java编程语言中,集合和数组是两种常见的数据结构,它们在存储和管理数据时有着显著的区别。理解这些差异对于编写高效、灵活的代码至关重要。 **数组(Array)**: 1. **固定大小**:数组在创建时必须指定长度,...

    java List和数组相互转换方法-list集合转数组.md

    list转数组

    xStream 实现xml与 java对象的转换

    8. **处理集合和数组**:xStream会自动处理List、Set等集合类型的序列化和反序列化,只需确保Java对象中的集合类型已正确映射到XML元素。 9. **安全注意事项**:xStream默认信任所有输入,这可能会导致潜在的安全...

Global site tag (gtag.js) - Google Analytics