`

array与list相关

 
阅读更多
1、将数组转化为一个列表
List<String> list = Arrays.asList(arr);  

Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、get()、contains()方法,但是没有增加元素的方法,所以它的大小是固定的,想要创建一个真正的ArrayList类,你应该这样做:
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));  


测试程序如下:
        List<String> list = Arrays.asList("jzk","wyq");
        System.out.println(list.size());
        list.add("jdd");
        System.out.println(list.size());


控制台报错:
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:131)
	at java.util.AbstractList.add(AbstractList.java:91)


正确代码:
        List<String> list = new ArrayList<String>(Arrays.asList("jzk","wyq"));
        System.out.println(list.size());
        list.add("jdd");
        System.out.println(list.size());

控制台输出:
2
3


2、用Arrays的asList()生成的List时,获取List元素的个数
//经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1
char arrc = {'a','b'};
int  arrint = {1,2,4};
Arrays.asList(arrc).size() ;//  结果为1;
Arrays.asList(arrint ).size() ;//结果为1;
 
//传递对象数组,元素个数正确。
String arrstr = {"a","b","java","spring","hadoop","lucene"};
Arrays.asList(arrstr ).size() ;//结果为6;


public class TestArray {
	PrintStream out = System.out;
	@Test
	public void array() {
		char[] arrc = {'a','b','c','d','e'};
		out.println("传递char数组:");
		print(arrc);
		out.println("直接传递:");
		print('a','b','c','d','e');
		out.println("----------------------------");
		
		int[] arri = {1,2,3,4,5,6,7};
		out.println("传递int数组:");
		print(arri);
		out.println("直接传递:");
		print(1,2,3,4,5,6,7);
		out.println("----------------------------");
		
		Integer[] arrInt = {1,2,3,4,5,6,7};
		out.println("传递Integer数组:");
		print(arrInt);
		out.println("直接传递:");
		print(1,2,3,4,5,6,7);
		out.println("----------------------------");
		
		String[] arrs = {"a","b","c","d","e"};
		out.println("传递String数组:");
		print(arrs);
		out.println("直接传递:");
		print('a','b','c','d','e');
		out.println("----------------------------");
	}
	
	public void print(Object...arr){
		out.print("内容:"+Arrays.toString(arr));
		out.println("\t\t数组长度:"+arr.length+" ");
	}
}


输出结果
传递char数组:
内容:[[C@defa1a]		数组长度:1 
直接传递:
内容:[a, b, c, d, e]		数组长度:5 
----------------------------
传递int数组:
内容:[[I@f5da06]		数组长度:1 
直接传递:
内容:[1, 2, 3, 4, 5, 6, 7]		数组长度:7 
----------------------------
传递Integer数组:
内容:[1, 2, 3, 4, 5, 6, 7]		数组长度:7 
直接传递:
内容:[1, 2, 3, 4, 5, 6, 7]		数组长度:7 
----------------------------
传递String数组:
内容:[a, b, c, d, e]		数组长度:5 
直接传递:
内容:[a, b, c, d, e]		数组长度:5 
----------------------------



如果直接传递数组,基本类型数组将被视为一个对象而不会被解析成数组,如果直接传递参数将能正常解析。

下面的写法更加清晰
int[] intArray = {1,2,3}; 
List<int[]> myList = Arrays.asList(intArray); 
System.out.println(myList.size()); 
System.out.println(myList.get(0).length); 



================解释如下====================
/**
     * Returns a fixed-size list backed by the specified array.  (Changes to
     * the returned list "write through" to the array.)  This method acts
     * as bridge between array-based and collection-based APIs, in
     * combination with {@link Collection#toArray}.  The returned list is
     * serializable and implements {@link RandomAccess}.
     *
     * <p>This method also provides a convenient way to create a fixed-size
     * list initialized to contain several elements:
     * <pre>
     *     List&lt;String&gt; stooges = Arrays.asList("Larry", "Moe", "Curly");
     * </pre>
     *
     * @param a the array by which the list will be backed
     * @return a list view of the specified array
     */
    public static <T> List<T> asList(T... a) {
	return new ArrayList<T>(a);
    }

如果是基本类型数组,自动装箱将数组包装为对象如 int[] intArray = new int[] { 1, 2}; T... a 就是 [[1, 2]],可以看到 a 的 size 将为 1
如果是对象数组,不需要自动装箱如 Integer[] integerArray = new Integer[] { 1, 2}; T... a 就是 [1, 2],可以看到 a 的 size 将为 2

其实只要记住这句话就ok了:
基本类型的一位数组可以被当作Object类型使用(1.5),不能当做Object[]类型使用(1.4);非基本类型的一维数组,既可以当做Object类型使用(1.5)也可以当做Object[]类型使用(1.4)

3、把提供的数组元素放入一个字符串
// containing the provided list of elements
// Apache common lang
String j = StringUtils.join(new String[] { "a", "b", "c" }, ", ");
System.out.println(j);
// a, b, c
分享到:
评论

相关推荐

    C# Array和ArrayList,List区别

    #### 四、Array、ArrayList 与 List 之间的转换 **Array 转换为 ArrayList** 可以使用 `ToArray` 方法将 `ArrayList` 转换为 `Array`: ```csharp ArrayList al = new ArrayList { 1, 2, 3 }; int[] arr = (int[]...

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

    - **Set转Array**: 与List相似,你可以先将Set转换为List,再将List转换为Array: ```java Set&lt;String&gt; set = ...; List&lt;String&gt; list = new ArrayList(set); String[] array = new String[list.size()]; list...

    javascript array list into setjavascript array list into set

    javascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array ...

    JS List的contains方法与Array的contains方法的使用

    ### JS List的contains方法与Array的contains方法的使用 在JavaScript中,`Array`是用于存储多个值的数据结构。然而,原生JavaScript并没有提供一个直接的`contains`方法来检查数组是否包含某个元素。通常情况下,...

    Python中列表list以及list与数组array的相互转换实现方法

    ### Python中的列表(List)及其与数组(Array)的相互转换 #### 一、Python中的列表(List) **1.1 列表的基本概念** 列表是Python中最常用的数据结构之一,它是一种有序集合,支持动态添加和删除元素。列表中的元素...

    线性表list_array的源代码(c语言)

    #ifndef __LIST_H__ #define __LIST_H__ struct list; struct list *list_init(); void list_free(struct list *list); int list_isempty(struct list *list); void list_clear(struct list *list); int list_...

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

    本篇将深入探讨Java中如何实现Array与List之间的相互转换。 一、Array到List的转换 1. 使用Arrays类的asList()方法 Java标准库中的Arrays类提供了一个asList()方法,可以将数组直接转换为ArrayList类型的List。...

    StringtoList和StringtoMap和StringtoObject和StringtoArray

    在处理JSON时,我们有时需要将JSON字符串转换为Java中的各种数据类型,如List、Array、Map和自定义对象。本文将详细介绍如何进行这些转换,并提供一个封装好的转换方法和示例。 1. **String to List** JSON字符串...

    Collection与Collections,Array与Arrays的区别

    Collection与Collections,Array与Arrays的区别 Collection与Collections的区别: Collection是一个接口,位于java.util包下,是各种集合结构的父接口。它提供了最基本的集合操作,如add、remove、contains等。...

    list.toArray方法

    在处理List集合时,我们有时需要将其转换为数组,以便进行更高效的操作,例如遍历、排序或与数组相关的其他操作。这就需要用到toArray()方法。 `toArray()`方法的基本用法如下: ```java List&lt;String&gt; list = new ...

    对numpy的array和python中自带的list之间相互转化详解

    以上这篇对numpy的array和python中自带的list之间相互转化详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:pytorch: tensor类型的构建与相互转换...

    VC.plug.in.module.development.array.list.rar_vc array

    本压缩包文件"VC.plug.in.module.development.array.list.rar_vc array"显然关注的是如何使用VC来构建一个数组列表插入模块。下面我们将深入探讨这一主题,讲解如何在VC中设计和实现这样的模块,以及涉及的关键知识...

    json与bean,array,list,map,简单类型之间的封装、解析

    本主题主要探讨的是如何使用Gson库处理JSON数据与Java中的Bean、Array、List、Map以及简单类型的相互转换。 首先,我们来看JSON与Java Bean之间的转换。Java Bean是一种具有特定属性和方法的对象,它们通常用来封装...

    VC.add.programming.array.list.rar_vc list

    在这个"VC.add.programming.array.list.rar_vc list"压缩包中,我们很显然会找到与在Visual C++ (VC) 中创建和操作数组列表相关的编程代码。数组列表在编程中扮演着重要角色,因为它提供了对动态大小数组的操作能力...

    C# 传入自定义列表List 到Oracle存储过程

    public static Oracle.DataAccess.Types.OracleArray ConvertToListArray(List&lt;MyType&gt; myList) { OracleConnection conn = new OracleConnection("your_connection_string"); OracleDataAdapter adapter = new ...

    Hibernate常见集合映射(Set,List_Array,Map,Bag)

    常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的集合类型,元素数据一般使用外键同主表关联。Set 集合非常适用于集合元素不...

    Javapython for leetcode 1 array2 list3 string4 hashtable5 m.zip

    标题 "Javapython for leetcode 1 array2 list3 string4 hashtable5 m.zip" 提供的信息表明,这个压缩包包含了一系列与LeetCode题目相关的Java和Python编程解决方案,重点涉及了数组、列表、字符串、哈希表(或字典...

    第 05 节_GEE 的数据类型(Dictionary,List,Array).pdf

    在本节中,我们重点介绍GEE中的三种主要数据类型:字典(Dictionary)、列表(List)和数组(Array)。这三者构成了数据结构的基础,它们各自具有不同的特性、用途和使用方法。 首先,让我们来了解字典(Dictionary...

    对python中list的拷贝与numpy的array的拷贝详解

    与Python内置的`list`类似,NumPy数组也可以进行拷贝操作。 #### 数组切片 vs 复制 - **数组切片**:在NumPy中,使用切片操作创建的新数组实际上是原始数组的一个视图,而不是独立的副本。这意味着对视图的任何...

    浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据...从中我们可以看出np.array与np.asarray功能是一样的,都是将输入转为矩阵格式。当输入是列表的时候,更改列表的值并不会影响转化为矩阵的值。 2.输入为数组时 a=np.random.random(

Global site tag (gtag.js) - Google Analytics