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

Main.java
1
2
3
4
5
6
7
    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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    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;
}

使用Array类处理基本数组对象的更多相关文章

  1. Array.prototype.sort()对数组对象排序的方法

    Array.prototype.sort()方法接受一个参数——Function,Function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行 ...

  2. 如何在JavaScript中手动创建类数组对象

    前言 关于什么是js的类数组对象这里不再赘述.可以参考这个链接,还有这里. js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法. 例: argume ...

  3. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

  4. Array类的Sort()方法

    刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享. Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System. ...

  5. C#编程(三十三)----------Array类

    Array类 创建数组 Array intArray1 = Array.CreateInstance(typeof(int), 5); for (int i = 0; i < 5; i++) { ...

  6. C# Array类的Sort()方法

    Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System.Int32 和System.String实现了IComparable接口,所以下 ...

  7. C++Array类模板编写笔记

    C++Array类模板 函数模板和类模板都属于泛型技术,利用函数模板和类模板来创建一个具有通用功能的函数和类,以支持多种不同的形参,从而进一步简化重载函数的函数体设计. 声明方法:template&l ...

  8. 数组对象(NSArray和NSMutableArrray)

    Objective-C中除了可以使用C中的基本数组外,如int[5],char word[] ={‘a’,'b’,'c’};Foundation还提供了NSArray类.Foundation是有序的对 ...

  9. javascript中的字符串对象和数组对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

随机推荐

  1. Mysql中datetime和timestamp区别

    DATETIME日期和时间的组合.支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'.MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DA ...

  2. 利用CombineFileInputFormat把netflix data set 导入到Hbase里

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xiewenbo/article/details/25637931 package com.mr.te ...

  3. 【开发者笔记】MQTT python测试笔记

    MQTT是基于订阅/发布的物联网协议. python测试需要一个发送进程和接收进程,即一个发送客户端和一个接收客户端,如果这两个客户端工作在同一个topic下,那么就能进行消息互通了. 服务器用“io ...

  4. Django Rest Framework(3)-----APIView与Viewsets

    REST framework提供了一个APIView类,它是Django的View类的子类. REST framework主要的几种view以及他们之间的关系: mixins 到目前为止,我们使用的创 ...

  5. Cocos2d-JS实现的2048

    一.前言 2048是之前火过一段时间的休闲数字消除类游戏,它的玩法很简单,上手很容易,可是想到要得到高分却很难,看似简单的游戏却有着很多得分的技巧,想当初这个游戏也曾是陪伴我大学课堂的游戏之一.虽然在 ...

  6. 分布式存储之MogileFS基于Nginx实现负载均衡(Nginx+MogileFS)

    MogileFS分布式文件系统特点: 1.具有raid的性能 2.不存在单点故障 3.简单的命名空间: 每个文件对应一个key:用于domain定义名称空间 4.不共享任何数据 5.传输中立,无特殊协 ...

  7. eclipse导入Java源码

    eclipse导入Java源码 下载源码包(一般jdk都自带了, 我的没有) src.zip eclipse -> window -> preferences -> JAVA -&g ...

  8. IP地址与子网掩码的计算

    128.0.0.0=1 192.0.0.0=2224.0.0.0=3 240.0.0.0=4 248.0.0.0=5 252.0.0.0=6 254.0.0.0=7 255.0.0.0=8255.12 ...

  9. 20155310 2016-2017-2 《Java程序设计》第七周学习总结

    20155310 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 认识时间与日期 •时间的度量 •GMT(格林威治标准时间):现在不是标 ...

  10. laravel + html ajax 多表单字段和图片一起上传

    $("#article_push").on('click', function (e){ e.preventDefault(); var stylestr = $('#summer ...