`
bolinyang
  • 浏览: 75352 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于JAVA中Arrays.asList使用时的一个注意点

 
阅读更多
一.概述

    Arrays是一个JAVA容器相关操作提供给我们的工具类,这个工具类中有这样一个方法Arrays.asList(),从这个方法的名字来看,就是把一组对象编程一个List的列表。下面我们先来看看JDK中Arrays.asList()的源代码

public static <T> List<T> asList(T... a) {
	return new ArrayList<T>(a);
}


我们看到这是一个泛型方法,方法的参数是一个可变参数列表,要求参数必须是同类型的T,方法的返回结果是一个T类型的List,从return语句可以看出这个List实际上就是ArrayList。

二.封装asList的返回值与不封装asList的返回值

    我们可以对asList的返回值进行封装,然后使用,或者对asList的返回值直接使用,这两种使用方法有细微的区别,看看下面的代码就明白了

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ArrayListTest {
    public static void main(String[] args) {
        Integer[] ia1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        List<Integer> list1 = Arrays.asList(ia1);    // 直接使用ia1,不包装
        Collections.sort(list1, new Comparator<Integer>(){

            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
            
        });
        // list1的倒排序影响ia的倒排序
        System.out.println("list1: " + list1.toString());
        System.out.println("ia: " + Arrays.asList(ia1).toString());
        
        Integer[] ia2 = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
        List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(ia2));   // 封装ia2之后再使用
        Collections.sort(list2, new Comparator<Integer>(){

            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        // list2的倒排序并没有影响ia的倒排序
        System.out.println("list2 " + list2.toString());
        System.out.println("ia2 " + Arrays.asList(ia2));
    }
}


输出结果如下:
list1: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
ia: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
list2 [20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
ia2 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

分享到:
评论

相关推荐

    Java Arrays.asList使用方法解析

    "Java Arrays.asList使用方法解析" ...Java Arrays.asList使用方法解析是一个非常重要的知识点,需要我们牢记Arrays.asList方法返回的ArrayList对象的行为与我们通常使用的List集合不同,以避免在编程中出现错误。

    Java中Arrays.asList()方法详解及实例

    Java中Arrays.asList()方法详解及实例 Arrays.asList()方法是Java中一个常用的方法,它将数组转换...Arrays.asList()方法是一个非常有用的方法,但是在使用时需要注意基本类型和引用类型的区别,以免出现意外的结果。

    Arrays.asList方法总结

    `Arrays.asList`方法是Java中一个非常实用的工具,它允许我们将数组转换为`List`对象,以便在处理数组时可以利用`List`接口提供的便利。然而,这个方法有一些特殊的特性和限制,需要我们理解清楚才能正确使用。下面...

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

    在使用 Arrays.asList 方法时,我们需要注意返回的 ArrayList 对象是一个内部类,不是 java.util.ArrayList 对象。如果需要使用 java.util.ArrayList 对象,我们需要使用 new ArrayList(Arrays.asList(...)) 来创建...

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

    但是,值得注意的是,这个List并不是我们通常使用的java.util.ArrayList类的实例,而是Arrays类的一个静态内部类。由于这个内部类没有实现List接口的所有方法,因此,如果尝试对这个List进行添加、删除或修改元素的...

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

    Java中的`Arrays.asList()`方法是Java集合框架的一部分,它允许我们将数组或变长参数转换为一个固定大小的`List`对象。这个方法在处理数组与集合之间的转换时非常有用,尤其是当你需要使用集合API操作数组时。下面...

    浅谈Arrays.asList()方法的使用

    在Java编程中,`Arrays.asList()`方法是一个非常实用的工具,它允许我们将数组转换成一个`List`对象。这个方法在处理数组与集合之间的转换时,提供了很大的便利。下面我们将深入探讨`Arrays.asList()`方法的使用细节...

    flyhero#MarkNote#用过Arrays.asList的注意了1

    而一开始asList()的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用as

    java随机生成字符串(字符随机生成类 生成随机字符组合).docx

    使用 `Random` 对象生成随机索引,从 `temp` 列表中随机选择一个元素添加到 `code` 中。 3. 重复步骤2直到生成的字符串长度达到 `num`。 4. 返回最终生成的字符串。 #### 三、使用示例 下面是一个简单的示例,...

    JAVA高级技术.pdf

    在Java中,我们可以将数组转换为List对象,利用`Arrays.asList()`方法即可实现。例如: ```java String[] animals = {"Tiger", "Lion", "Cat", "Dog", "Deer", "Chicken", "Sheep", "Horse", "Rabbit", "Snake"};...

    list使用过程中遇到的坑

    当我们在实际业务开发过程中,难免会遇到数组转List的操作,通常我们所选择的就是上面的Arrays.asList进行操作,但是,对的但是来了,我们在使用的时候会发现基本数据类型的参数转化的结果会和我们想要的结果完全不...

    Java Arrays.sort和Collections.sort排序实现原理解析

    2. **迷你TimSort**:当数组长度小于`MIN_MERGE`时,会使用一个简化的TimSort,即`binarySort()`,它实际上是一个二分插入排序。 3. **查找和反转运行段**:`countRunAndMakeAscending()`方法会查找当前未排序部分的...

    Java中Arrays类详解.docx

    在Java编程语言中,`java.util.Arrays`类是一个非常实用的工具类,它提供了一系列静态方法,用于操作各种类型的数组,包括整型、浮点型、字符型等。这个类使得处理数组变得更加简单和高效。下面我们将详细探讨`...

    Java中初始化List的5种方法示例

    但也有几点需要注意:Arrays.asList返回的是Arrays的静态内部类,不支持增删元素;参数如果是基本类型的数组时,需要留意返回值可能和你预期的不同。 第四种方法:使用Stream(JDK8),单纯初始化List,使用Stream...

    java的Arrays类的应用.doc

    Java的`Arrays`类是Java Util包中的一个非常重要的工具类,它提供了许多方便的方法来操作数组,包括初始化、排序、查找以及比较等。在上述文档中,我们看到`Arrays`类的一些主要应用: 1. **给数组赋值**: - `...

    Java数组的常用方法.doc

    可以使用 Arrays.asList() 方法将一个数组转换为一个 List,然后使用 contains() 方法来检查数组是否包含某个值: String[] stringArray = { "a", "b", "c", "d", "e" }; boolean b = Arrays.asList(stringArray)....

    关于 Java Collections API 您不知道的 5 件事,第 1 部分

    在处理集合时,经常需要将一个集合的内容转移到另一个集合中,或者从一个较大的对象集中移除一个较小的对象集。此时,许多开发者可能会选择通过迭代的方式来添加或移除元素,但这并不是一个高效的方法。每次添加或...

    10个Java经典的List面试题

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

    java中的Arrays这个工具类你真的会用吗(一文秒懂)

    源码中,`asList`方法创建了一个`ArrayList`,并将传入的数组作为底层存储。这样,数组元素就可通过列表接口进行访问和操作。 - **`binarySearch`** `binarySearch`方法实现了二分查找算法,可以用于查找已排序...

Global site tag (gtag.js) - Google Analytics