Arrays.asList方法总结

话不多说,请看代码:

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();
  }
} 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

  • Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理

    一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于"数"组,ArrayList是一个泛型类,可以存放任意类型的对象.顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象.ArrayList类常用的方法有add().clear().get().indexOf().remove().sort().toArray().toStri

  • ArrayList详解和使用示例_动力节点Java学院整理

    第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口. ArrayList 继承了AbstractList,实现了List.它是一个数组队列,提供了相关的添加.删除.修改.遍历等功能. ArrayList 实现了RandmoAccess接口,即提

  • java ArrayList按照同一属性进行分组

    java ArrayList按照同一属性进行分组 前言: 通常使用SQL查询一批数据的时候,可以利用SQL中的GROUP BY语句对数据进行分组,但是有时候出于对性能的考虑,不会使用GROUP BY,而是先把数据捞出来后,使用代码,在内存中按照某个属性进行分组. 代码 public class SkuVo { private Long skuId; private String productName; private Long brandStoreSn; public SkuVo(Long s

  • java 对ArrayList进行分页实例代码

    java 对ArrayList进行分页 概述 系统与系统之间的交互,通常是使用接口的形式.假设B系统提供了一个批量的查询接口,限制每次只能查询50条数据,而我们实际需要查询500条数据,这个时候可以对这500条数据做分批操作,分10次调用B系统的批量接口. 如果B系统的查询接口是使用List作为入参,那么要实现分批调用的话,可以利用ArrayList的subList方法来处理. 代码 sublist方法的定义: List<E> subList(int fromIndex, int toInde

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

    java中List.Array.Map.Set等集合相互转换 在java中,我们经常需要对List.Array等做一些转换操作,当然转换方法有很多种,但哪种方法既方便又高效呢?在这里向大家介绍一下集合间的最佳转换方法. 1.List转换为Array List<String> list = new ArrayList<String>(); list.add("China"); list.add("Switzerland"); list.add(

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

    首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新 (3)不支持add和remove方法 上代码: package com.hdu.test; import java.util.Arrays; import java.util.List; abstract public class AsllistTest

  • java中ArrayList与LinkedList对比详情

    ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需要注意的是对于容量超过阈值的处理逻辑,数组的默认容量大小是10,最大容量是Integer.Max_Value,超过最大容量会抛内存溢出异常, 扩容机制看下面 扩容后的容量是原有容量的1.5倍 LinkedList的实现方式 内部采用双向链表Node内部类来存储数据,由于采用了双向链表,LinkedL

  • Arrays.asList方法总结

    话不多说,请看代码: import java.util.Arrays; import java.util.List; /** * * 本类演示了Arrays类中的asList方法 * 通过四个段落来演示,体现出了该方法的相关特性. * * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 * (2) 当使用asList()方法时,数组就和列表链接在一起了. * 当更新其中之一时,另一个将自动获得更新. * 注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性

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

    最近,抽空把java Arrays 工具类的asList 方法做了源码分析,在网上整理了相关资料,记录下来,希望也能帮助读者! Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: /** * Returns a fixed-size list backed by the specified array. (Changes to * the returned list "write through" to the arr

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

    Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] a = {1, 2, 3, 4}; List list = Arrays.asList(a); System.out.println(list.size()); //1 } } 期望的输出是 list 里面也有4个元素,也就是 size 为4,然而结果是1. 原因如下: 在 Arrays.asLis

  • Java Arrays.asList使用方法解析

    Arrays.asList()方法的作用是将数组或一些元素转为集合,而你得到的集合并不是我们通常使用的List集合,而是Arrays里面的一个内部类.阿里的开发手册上java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出java.lang.UnsupportedOperationException的异常. 一.Arrays.asList的方法说明 public static void mai

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

    Java中使用Arrays.asList初始化ArrayList package xiaoling; import java.util.Arrays; import java.util.ArrayList; import java.util.List; public class ListTest{ public static void main(String[] args){ List<List<Integer>> list = new ArrayList<>(); f

  • Java踩坑记录之Arrays.AsList

    前言 java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. 如果对集合使用增加或删除元素的操作将会报错 如下代码: List list = Arrays.asList("a","b","c"); list.add("d"); 输出结果: Exception in thread &q

  • Java Arrays.AsList原理及用法实例

    java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. 如果对集合使用增加或删除元素的操作将会报错 如下代码: List list = Arrays.asList("a","b","c"); list.add("d"); 输出结果: Exception in thread "

  • java中为什么要谨慎使用Arrays.asList、ArrayList的subList

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1)); System.out.println(statusList.contains(3)); 输出结果如下图所示: 然后,往statusLis

  • Java中List.of()和Arrays.asList()的区别及原因分析

    目录 Java中List.of()和Arrays.asList()的区别及原因 1.Arrays.asList()可以插入null 2.用List.of的List自然是不包含null 3.List.of生成的List不能修改 4.关于数组修改对List的影响 原因 java listof报错处理 Java中List.of()和Arrays.asList()的区别及原因 动手写一下,让自己更有印象 1.Arrays.asList()可以插入null 而List.of()不可以 import jav

随机推荐