`

(转)使用Array类处理基本数组对象

 
阅读更多
http://zhaozhiming.github.io/blog/2012/05/22/use-array-deal-with-base-type-in-java/

java里面的Arrays类有个asList方法,参数是1或多个Object对象,如果传入一个Object数组,则可以将该数组转化为List,但如果传入的是一个基本类型的数据(int,long,short 等),则无法将数组转换成正确的list,测试代码如下:
Main.java

    public static void main(String[] args) {
        List<int[]> ints = asList(new int[]{1, 2});
        System.out.println(ints.size());  //1

        List<Integer> integers = asList(new Integer[]{1, 2});
        System.out.println(integers.size()); //2
    }
asList会将整个基本类型数组作为一个Object对象放到list里面,所以第一个List的size只有1。
如何将基本类型数组装换为一个list呢?最简单暴力的方法就是遍历整个基本类型数组,再逐一往list里面添加。但这种方法不适用所有基本类型,需要为每种基本类型写一个方法。
Main.java

    public List<Integer> arrayToList(int[] ints) {
        List<Integer> intList = new ArrayList<Integer>();
        for (int anInt : ints) {
            intList.add(anInt);
        }
        return intList;
    }

    public List<Long> arrayToList(Long[] longs) {
        List<Long> longList = new ArrayList<Long>();
        for (long anLong : longs) {
            longList.add(anLong);
        }
        return longList;
    }

  .....other arrayToList method
重复代码会很多是吧,如何消除呢?下面就是帖子的重点了,利用Array类进行操作。
Array类有几个方法比较常用:
public static int getLength(java.lang.Object array):获取数组对象的长度。
public static java.lang.Object get(java.lang.Object array, int index):根据下标获取数组对象的元素。
public static void set(java.lang.Object array, int index, java.lang.Object value):根据下标插入数组对象元素。
于是上面那些方法就可以用一个方法搞定了,如下:
Main.java

    public static void main(String[] args) {
        int[] ints = {1, 2};
        long[] longs = {1L, 2L, 3L};
        char[] chars = {'a', 'b', 'c', 'd'};

        System.out.println(arrayToList(ints).size()); //2
        System.out.println(arrayToList(longs).size()); //3
        System.out.println(arrayToList(chars).size()); //4
    }

    public static List<Object> arrayToList(Object array) {
        List<Object> list = new ArrayList<Object>();
        int length = Array.getLength(array);
        for (int i = 0; i < length; i++) {
            list.add(Array.get(array, i));
        }
        return list;
    }
http://zhaozhiming.github.io/blog/2012/05/22/use-array-deal-with-base-type-in-java/
分享到:
评论

相关推荐

    json转对象数组与对象数组转json --Java

    ### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理JSON数据时经常需要进行JSON字符串与Java对象之间的转换。特别是在涉及到数组或集合的场景下,这种转换显得尤为重要。本文将详细介绍如何使用...

    C#中动态声明与使用对象数组实例

    在C#编程语言中,动态声明与使用对象数组是一种常见的操作,特别是在处理不确定数量的数据时。本实例将探讨如何在C#中实现这一功能,并关注数组的声明、使用、数据保护以及内存管理。 首先,我们要了解C#中的数组。...

    jni传递对象数组

    对象数组的处理涉及到对Java虚拟机(JVM)的内存管理和类型转换的理解。 1. **创建本地方法** 在Java类中,我们可以声明一个本地方法,使用`native`关键字,例如: ```java public class JniObjArrayExample { ...

    js解析php数组对象数组对象数组对象.docx

    本文主要介绍如何使用 JavaScript 解析由 PHP 生成的数组对象。 #### 二、JavaScript 数组基础 1. **数组的概念** - 数组是一种用于存储一系列值的变量。 - 每个值称为数组的一个元素。 - 元素的位置用索引表示...

    js获取对象,数组所有属性键值(key)和对应值(value)的方法示例

    下面是示例代码的详细解释,它演示了如何获取数组对象的键和值: ```javascript // 定义一个包含多个对象的数组 var slideArray = [ { imgsrc1: "a.jpg" }, { imgsrc2: "b.jpg" }, { imgsrc3: "c.jpg" }, { ...

    Unity3D教程:Array数组类的使用(二)1

    本教程主要关注Array数组类在JavaScript中的使用。 Array 类是Unity3D中JavaScript的特定实现,它提供了丰富的函数和属性来操作数组。数组的长度可以通过 `length` 属性获取或设置,例如: ```javascript var arr ...

    将数组转换成JSON对象

    综上所述,将数组转换为JSON对象不仅是JavaScript编程中的一个基本技能,也是实现前后端数据交互的重要环节。无论是使用自定义函数还是利用现代JavaScript内置的方法,掌握这一技能对于任何从事Web开发的工程师来说...

    axis自定义数组对象

    - `Bean` 类是自定义数组对象的基本单元,实现了 `Serializable` 接口,确保可以在网络上传输。 - 包含两个属性:`id` 和 `name`,分别表示标识符和名称。 **2. 实现自定义数组对象的处理逻辑** ```java package ...

    C_Array Array数组

    Array类的方法如`Copy`用于复制数组的部分或全部,`Sort`用于对数组元素进行排序。 ArrayList是.NET Framework早期版本中的动态数组,它可以自动调整大小以适应存储更多的元素。尽管ArrayList可以存储任何类型的...

    JavaScript数组对象Array案例.pdf

    在JavaScript中,数组对象Array是用于存储一组有序的数据集合,它可以包含任意类型的数据,如数字、字符串、对象等...通过实践和案例分析,我们可以更好地掌握数组对象Array的运用,从而在实际编程中更有效地处理数据。

    swift-可以直接把模型数组归档转成data完美解决大量数据缓存的问题

    标题"swift-可以直接把模型数组归档转成data完美解决大量数据缓存的问题"提到了一种利用Swift的归档(Archiving)机制将模型数组转换为Data对象,从而实现数据缓存的方法。这种方法可以帮助我们高效地存储和检索应用...

    javascript中数组、对象

    在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...

    js将数组对象格式的的数据转为json

    首先,理解数组对象和JSON的基本概念至关重要。数组对象是由一系列有序元素组成的集合,这些元素可以是任何数据类型,包括其他对象。例如: ```javascript let arrayObject = [ {id: 1, name: 'Alice'}, {id: 2, ...

    JavaScript数组对象Array.pdf

    JavaScript中的Array对象是编程语言中处理有序数据集合的关键部分,它允许你在单个变量中存储多个值。在JavaScript中,数组是一种动态数据结构,这意味着在创建后,你可以随时添加、删除或修改数组的元素。 创建...

    Python当中的array数组对象实例详解

    #### 二、Array数组对象的基本使用 ##### 创建数组 要创建一个数组,首先需要导入`array`模块,然后使用`array.array()`函数。此函数接受两个参数: - `typecode`: 表示数组元素的数据类型,例如`'i'`表示整数。 - `...

    js一维数组、多维数组和对象的混合使用方法.docx

    本文将深入探讨一维数组、多维数组以及对象的混合使用方法。 首先,一维数组是最基本的数组形式,允许我们存储同类型或不同类型的值。例如: ```javascript var arr1 = ["飞鱼", 25, 172, "江苏"]; ``` 这里,`...

    hibernate array 数组映射

    以上就是关于`hibernate array 数组映射`的主要内容,希望对理解Hibernate如何处理数组映射有所帮助。在实际开发中,根据具体需求选择合适的数据结构映射,可以极大地提高代码的效率和可维护性。

    数组和集合对象(一) Array练习

    3. **排序数组**:使用Array类的Sort方法对数组进行升序或降序排序。 4. **查找元素**:查找数组中是否存在特定值,使用Array.IndexOf方法。 5. **多维数组**:处理二维或多维数组,如矩阵运算。 6. **复制数组**:...

    iOS数组和字典转JSON格式

    要将数组和字典转换为JSON字符串,我们需要使用Foundation框架中的`NSJSONSerialization`类。这个类提供了JSON数据的编码和解码功能。以下是一些关键方法: 1. `+ (id)JSONObjectWithData:(NSData *)data options:...

    JavaScript 实现Array(数组)和Map

    Array(数组)是JavaScript中最基本的数据结构之一。在JavaScript中,数组可以容纳多种类型的元素,包括数字、字符串、对象等。JavaScript数组提供了丰富的内置方法,如push、pop、shift、unshift、slice、splice、...

Global site tag (gtag.js) - Google Analytics