`
bolinyang
  • 浏览: 74150 次
  • 性别: 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()方法详解及实例

    主要介绍了Java中Arrays.asList()方法将数组作为列表时的一些差异的相关资料,需要的朋友可以参考下

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

    在本篇文章里小编给大家分享的是关于Java中使用Arrays.asList初始化ArrayList的知识点内容,需要的朋友们参考下。

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

    主要介绍了java 源码分析Arrays.asList方法详解的相关资料,需要的朋友可以参考下

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

    下面小编就为大家带来一篇Arrays.asList() 和ArrayList类型区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

    千万别这样使用Arrays.asList详解

    主要给大家介绍了关于为什么说千万别这样使用Arrays.asList()的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    list使用过程中遇到的坑

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

    java泛型总结.docx

    泛型类型:定义泛型类型时,使用尖括号,并在尖括号中指定类型参数。例如,List表示一个字符串类型的列表。 泛型方法:定义泛型方法时,在方法名后面使用尖括号,并在尖括号中指定类型参数。例如,public static &lt;T&gt;...

    Java字符串逗号分割实现.pptx.pptx

    split()函数可以将字符串按照指定的分隔符进行分割,返回一个字符串数组,我们可以通过Arrays.asList()方法将其转换为列表。 Stream API的应用 Java8引入了Stream API,其中的of()方法和map()方法可以方便地将字符串...

    Java程序员容易犯的10个错误

    Java程序员容易犯的10个错误,Arrays.asList() 会返回一个ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类java.util.Arrays.ArrayList 有set(), get(), contains()方法,但并支持添加...

    Java设计模式

    ● java.util.Arrays#asList() ● javax.swing.JTable(TableModel) ● java.io.InputStreamReader(InputStream) ● java.io.OutputStreamWriter(OutputStream) ● javax.xml.bind.annotation.adapters....

    Java开发者常犯的十个错误

     Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList。java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任何能增加元素的方法,所以它的...

    Java Stream、File、IO.pdf

    该示例将一个整数列表中的偶数筛选出来,并将它们加起来。 List&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .filter(n -&gt; n % 2 == 0) .mapToInt(Integer::intValue) .sum()...

    把Java数组转换为List时的注意事项

    举个例子,现在将一个Java数组转换为List。当然,我们可以使用Arrays.toList方法,但是如果没有慎重思考随便使用几乎肯定会产生令人讨厌的意外。考虑完下面这段程序并预测其输出你明白我的意思了: package ...

    Android代码-moshi

    Moshi Moshi is a modern JSON library for Android and Java. It makes it easy to parse JSON into Java objects: String json = ...; Moshi moshi = new Moshi.Builder().... Arrays.asList(new Card('4', CLUBS)

    Android代码-滚动播放的公告控件

    vNotice.start(Arrays.asList(notices)); vNotice.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, notices[vNotice.getIndex()],...

    java常用工具类的使用

    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...

    jTableGenerator:生成表格

    例子: String latexTable = new FluentLaTexTableBuilder().withCaption("this is a latex table").withLabel("tab:latex table") .withColumns(Arrays.asList("scenario","time","distance") .withRow(Array....

    关于列表有用的一些方法.pptx

    关于列表有用的一些方法;掌握从数组创建列表的方法; 掌握对列表进行排序; 掌握查找列表中的最大值、最小值的方法 掌握打乱列表的方法;;Java.util.ArrayList;操作;1. 从数组创建列表:Arrays.asList(数组名) ...

Global site tag (gtag.js) - Google Analytics