Java中数组,List,Set的相互转换注意点(样例)

简介:

一,突然想起了,贴个图先
image

二,样例
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.google.common.primitives.Ints;

public class SmallProgram
{

public static void transfArrayListSet(int[] a, String[] b){
    //========1,数组转换成list asList
    //①对非简单类型数组而言:转换后的list不能进行修改长度操作,否则会抛出java.lang.UnsupportedOperationException异常(因为asList返回的是一个视图,即:所有list的操作都会反应在原数组上,且这个list是定长的)
    List<String> arr2List4Str = Arrays.asList(b);
    //copyB.add("There will be an ERROR : UnsupportedOperationException");
    //copyB.remove(0);//UnsupportedOperationException
    
    //②对简单类型而言:不能把基本数据类型转换成列表,这里转的时候结果列表里面只有一个int[]类型的数组元素,String等复杂数据类型是可以这样使用的
    //List<int[]> copyA1 = Arrays.asList(a);
    //基本数据类型转换可以使用google的guava下面Ints类的方法,但是转换后的list不能进行修改长度操作,否则会抛出java.lang.UnsupportedOperationException异常(因为asList返回的是一个视图,即:所有list的操作都会反应在原数组上,且这个list是定长的)
    List<Integer> arr2List4Int = Ints.asList(a);
    //copyA2.add(1);//UnsupportedOperationException
    //copyA2.remove(0);//UnsupportedOperationException
    
    //========2,list转数组 toArray
    Object[] list2Arr = arr2List4Int.toArray();
    System.out.println(list2Arr[0]);
    
    //========3,数组转set 通过list中转
    Set<String> arr2Set4Str = new HashSet<String>(Arrays.asList(b));
    arr2Set4Str.add("5");
    arr2Set4Str.remove(0);
    Set<Integer> arr2Set4Int = new HashSet<Integer>(Ints.asList(a));
    arr2Set4Int.add(5);
    arr2Set4Int.remove(0);
    
    //========4,set转数组 toArray
    Object[] set2Arr4Str = arr2Set4Str.toArray();
    Object[] set2Arr4Int = arr2Set4Int.toArray();
    
    //========5,set转list 通过构造方法
    List<String> set2List4Str = new ArrayList<String>(arr2Set4Str);
    set2List4Str.add("6");
    set2List4Str.remove(0);
    List<Integer> set2List4Int = new ArrayList<Integer>(arr2Set4Int);
    set2List4Int.add(6);
    set2List4Int.remove(0);
    
    //========6,list转set 通过构造方法
    Set<String> list2Set4Str = new HashSet<String>(set2List4Str);
    Set<Integer> list2Set4Int = new HashSet<Integer>(set2List4Int);
}

/**
 * @param args
 */
public static void main(String[] args)
{
    int[] intArr = new int[]{1,2,3};
    String[] strArr = new String[]{"1","2","3"};
    SmallProgram. transfArrayListSet(intArr,strArr);
}

}

目录
相关文章
|
3天前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
3天前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
Java基础(六):数组
|
1天前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
26 12
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
232 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
2月前
|
存储 算法 Java
Java Set深度解析:为何它能成为“无重复”的代名词?
Java的集合框架中,Set接口以其“无重复”特性著称。本文解析了Set的实现原理,包括HashSet和TreeSet的不同数据结构和算法,以及如何通过示例代码实现最佳实践。选择合适的Set实现类和正确实现自定义对象的hashCode()和equals()方法是关键。
46 4
|
2月前
|
Java
那些与Java Set擦肩而过的重复元素,都经历了什么?
在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
27 4
|
2月前
|
Java 开发者
Java Set:当“重复”遇见它,秒变“独宠”!
在Java编程中,Set接口确保集合中的元素不重复,每个元素都是独一无二的“独宠”。本文介绍了Set的两种常见实现:HashSet和TreeSet。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet基于红黑树实现,不仅去重还能对元素进行排序。通过示例代码,展示了这两种集合的具体应用,帮助开发者更好地理解和使用Set。
36 4
|
7月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1099 1
|
6月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
6月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。