当前位置: 首页 > 编程笔记 >

Arrays.asList方法总结

司马狐若
2023-03-14
本文向大家介绍Arrays.asList方法总结,包括了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(); 
  } 
} 

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

 类似资料:
  • 本文向大家介绍java 源码分析Arrays.asList方法详解,包括了java 源码分析Arrays.asList方法详解的使用技巧和注意事项,需要的朋友参考一下 最近,抽空把java Arrays 工具类的asList 方法做了源码分析,在网上整理了相关资料,记录下来,希望也能帮助读者! Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List 。

  • 本文向大家介绍Java中Arrays.asList()方法详解及实例,包括了Java中Arrays.asList()方法详解及实例的使用技巧和注意事项,需要的朋友参考一下 Arrays.asList() 是将数组作为列表。 问题来源于: 期望的输出是 list 里面也有4个元素,也就是 size 为4,然而结果是1。 原因如下: 在 Arrays.asList 中,该方法接受一个变长参数,一般可看

  • 本文向大家介绍Java用Arrays.asList初始化ArrayList实例方法,包括了Java用Arrays.asList初始化ArrayList实例方法的使用技巧和注意事项,需要的朋友参考一下 Java中使用Arrays.asList初始化ArrayList 运行结果为:[[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7,

  • 问题内容: 使用Arrays.asList(something)优于Collections.singletonList(something)来构成包含一项的列表是否有优势(或有很大不同)?后者使返回的列表也不可变。 问题答案: 是 不可变的, 而数组是固定大小的表示形式,列表和数组在堆中连接在一起。 允许对其进行 非结构更改 ,这些 更改 将同时反映到List和联合数组中。 尽管您可以为特定索引设

  • 问题内容: 所以有,但这对可变参数有效。 如果我已经在数组中了怎么办?是否有方便的方法来创建此文件,或者我必须手动执行以下操作: 问题答案: 仅仅因为它与varargs一起工作并不意味着您不能正常调用它: 唯一棘手的问题是ifT是Object,您应该在其中使用强制类型转换来告诉编译器是否应将参数包装在数组中: 要么

  • 问题内容: 当我运行以下代码时,没有输出输出。 问题答案: 当您将原始数组(以您的情况为例)传递给时,它将创建一个具有单个元素的数组- 数组本身。因此返回false。将返回true。 如果您使用代替,它将起作用。 进一步说明: 的签名为。基元不能替换泛型类型参数。因此,当您将此方法传递给an时,整个数组将被替换,并得到a。另一方面,当您将传递给该方法时,替换将获得。