`

array,list 和asList()

    博客分类:
  • java
阅读更多
//摘来的***********************************************************
import java.util.Arrays;  
import java.util.List;  
  
/** 
 *  
 * 本类演示了Arrays类中的asList方法 
 * 通过四个段落来演示,体现出了该方法的相关特性. 
 *  
 * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 
 * (2) 当使用asList()方法时,数组就和列表链接在一起了. 
 *     当更新其中之一时,另一个将自动获得更新。 
 *     注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 
 * (3) asList得到的数组是的没有add和remove方法的 
 *  
 * 阅读相关:通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的 
 * 内部类,而该类并没有定义add和remove方法.另外,为什么修改其中一个,另一个也自动 
 * 获得更新了,因为asList获得List实际引用的就是数组 
 */  
public class AsListTest {  
  
    public static void main(String[] args) {  
  
        /* 段落一:基本数据类型使用asList中的问题 */  
  
        /* 说明:虽然在JDK1.6中能够将基本数据类型的数组转换成List,但还是有个缺陷 */  
        int[] a_int = { 1, 2, 3, 4 };  
        /* 预期输出应该是1,2,3,4,但实际上输出的仅仅是一个引用, 这里它把a_int当成了一个元素 */  
        List a_int_List = Arrays.asList(a_int);  
        foreach(a_int_List);  
        /* 为此我们需要这样遍历其中元素 */  
        foreachForBase(a_int_List);  
  
        /* 段落二:对象类型的数组使用asList,是我们预期的 */  
        Integer[] a_Integer = new Integer[] { 1, 2, 3, 4 };  
        List a_Integer_List = Arrays.asList(a_Integer);  
        foreach(a_Integer_List);  
  
        /* 段落三:当更新数组或者asList之后的List,另一个将自动获得更新 */  
        a_Integer_List.set(0, 0);  
        foreach(a_Integer_List);  
        foreach(a_Integer);  
  
        a_Integer[0] = 5;  
        foreach(a_Integer_List);  
        foreach(a_Integer);  
  
        /* 段落四:对基本类型数组,通过asList之后的List修改对应的值后,在运行时会报出异常  
         * 但是基本类型数组对应的List是会发生变化的,这是毫无疑问的 
         */  
          
        /* 
         * a_int_List.set(0, 0);  
         * foreach(a_int_List); foreach(a_int); 
         */  
  
        a_int[0] = 5;  
        foreachForBase(a_int_List);  
        foreach(a_int);  
  
    }  
  
    /* 打印方法 */  
    private static void foreach(List list) {  
        for (Object object : list) {  
            System.out.print(object + " ");  
        }  
        System.out.println();  
  
    }  
  
    private static void foreachForBase(List a_int_List) {  
        int[] _a_int = (int[]) a_int_List.get(0);  
        foreach(_a_int);  
    }  
  
    private static void foreach(int[] a_int) {  
        for (int i : a_int) {  
            System.out.print(i + " ");  
        }  
        System.out.println();  
    }  
  
    private static void foreach(Integer[] _a_Integer) {  
        for (int i : _a_Integer) {  
            System.out.print(i + " ");  
        }  
        System.out.println();  
    }  
}
分享到:
评论

相关推荐

    java List、Set与Array之间的相互转换

    在Java编程语言中,数据结构的使用是至关重要的,其中包括List、Set和Array。这三种数据结构各有特点,适用于不同的场景。理解它们之间的相互转换能够帮助我们更好地管理和操作数据。以下将详细介绍Java中List、Set...

    详解Java如何在Array和List之间进行转换.rar

    总结,Java中Array和List之间的转换主要依赖于Arrays类的asList()方法、ArrayList的toArray()方法以及Java 8引入的Stream API。理解这些转换方式及其适用场景,能够帮助我们在编程中更灵活地处理数据结构,提高代码...

    数组和list相互转换

    在编程领域,数组(Array)和列表(List)是两种常用的数据结构,它们各自具有不同的特点和适用场景。数组是一种固定长度的数据结构,适合存储已知大小的数据集合;而列表则是一种可变长度的数据结构,适合存储未知...

    Array和Collection相互转换以及copy深度的小测

    List<String> list = Arrays.asList(array); ``` 注意,这种方法创建的是固定大小的`List`,不能添加或删除元素,因为底层仍然是数组。 2. **CopyOf()** 和 **CopyOfRange()**: 这是`Arrays`类提供的静态方法,...

    java中List、Array、Map、Set等集合相互转换

    这里,我们首先创建了一个 Array,然后使用 Arrays.asList() 方法将 Array 转换为 List,最后使用 HashSet 构造函数将 List 转换为 Set。 Map 转换为 Set 将 Map 转换为 Set 可以使用 map.values() 方法,例如: `...

    String[] list 相互转化

    在 Java 编程语言中,`String[]` 数组和 `List` 集合之间的相互转换是非常常见的需求。这两种数据结构各有优势:数组提供了固定长度且访问效率高的特性,而列表则支持动态调整大小并且提供丰富的操作方法。了解它们...

    10个Java经典的List面试题

    List 可以使用 toArray() 方法转换为 Array,Array 可以使用 Arrays.asList() 方法转换为 List,由于 Arrays.asList() 方法返回的是固定的 List,可以使用 new ArrayList(Arrays.asList(array)) 方法来创建一个可扩...

    10个Java经典的List面试题!.pdf

    可以使用toArray()方法将List转换为Array,也可以使用Arrays.asList()方法将Array转换为List。需要注意的是,Arrays.asList()方法返回的List是固定的,不可以添加或删除元素。如果需要添加或删除元素,可以使用new ...

    Java 在 Array 和 Set 之间进行转换的示例.rar

    在Java编程语言中,Array和Set是两种不同的数据结构,它们各自有其特性和用途。Array是一种固定大小的序列,可以存储基本类型或对象,并且元素可以通过索引访问。而Set是一个不允许有重复元素的集合,它维护了元素的...

    Java 数组转list.docx

    List<String> list = Arrays.asList(array); System.out.println(list); } } ``` 在上面的代码中,我们首先创建了一个字符串数组,然后使用 Arrays 的 asList 方法将其转换为 List。最后,我们打印出转换后的 ...

    浅谈Arrays.asList() 和ArrayList类型区别

    List<String> list = Arrays.asList(array); ``` 在这个例子中,Arrays.asList()将字符串数组转换为了一个List。但是,值得注意的是,这个List并不是我们通常使用的java.util.ArrayList类的实例,而是Arrays类的一...

    java 数组转list.docx

    List<String> list = Arrays.asList(array); System.out.println(list); } } ``` 输出:[apple, banana, orange] 方法 2:使用 ArrayList 的构造函数 使用 ArrayList 的构造函数可以将数组转换为 List。该方法...

    Java Arrays.asList使用方法解析

    但是,需要注意的是,asList并不是我们通常使用的List集合,而是一个内部类,它的add、remove和clear方法都会抛出UnsupportedOperationException异常。 例如: ```java String[] strs = {"1","2","3"}; List...

    Java集合List与Array的相互转换

    2. 将Array转换为List时,使用`Arrays.asList(T... a)`,但得到的List不支持修改操作。 3. 在处理`Arrays.asList()`返回的List时,避免调用添加、移除或清空元素的方法,以免抛出异常。 了解这些知识点后,你将在...

    java 源码分析Arrays.asList方法详解

    List<String> array1 = Arrays.asList("Welcome", "to", "Java", "world"); array1.add("Cool~~~"); // 抛出UnsupportedOperationException ``` 在上面的例子中,`array1`看起来像是一个普通的`List`,但实际上它是...

    Java经典的List面试题目

    - Array转List:可以使用`Arrays.asList(array)`将数组转换为List,但这个List是固定大小的,不支持add操作。 - List转Array:通过List的`toArray()`方法可以将其转换为数组,如果需要指定类型的数组,可以使用`...

    Java用Arrays.asList初始化ArrayList实例方法

    在 Java 中,使用 Arrays.asList 方法可以快速创建一个 List 集合,但是需要注意的是,这个方法返回的 ArrayList 并不是 java.util.ArrayList 对象,而是一个内部类。下面我们来详细了解这个知识点。 首先,让我们...

    Java编程实现数组转成list及list转数组的方法

    数组和List都是Java中常用的数据结构,数组是固定大小的数据结构,而List是可变大小的数据结构。在实际开发中,我们经常需要将数组转换为List,或者将List转换为数组。下面我们将详细介绍Java编程实现数组转成list及...

    java-array.zip_源代码;array

    这个"java-array.zip"压缩包文件包含了关于数组和集合处理的源代码实例,供开发者学习和参考。这里我们将深入探讨这两个概念以及相关的函数操作。 一、Java数组 1. 定义:数组是一种固定大小的线性数据结构,可以...

Global site tag (gtag.js) - Google Analytics