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. SQL基础--查询之四--集合查询

    SQL基础--查询之四--集合查询

  2. 第1章 1.6计算机网络概述--OSI参考模型

    ISO七层模式:国际标准组织对互联网通信规则进行的定义. 7.应用层:所有能产生网络流量的程序,如:QQ. 6.表示层:传输前对数据进行进行处理,是一种数据处理的规则,如:加密.压缩.传输二进制(图片 ...

  3. mysql 数据操作 单表查询 使用正则表达式查询

    SELECT * FROM employee WHERE name REGEXP '^ale'; SELECT * FROM employee WHERE name REGEXP 'on$'; SEL ...

  4. (转)Terraform,自动化配置与编排必备利器

    本文来自作者 QingCloud实践课堂 在 GitChat 上分享 「Terraform,自动化配置与编排必备利器」 Terraform - Infrastructure as Code 什么是 T ...

  5. monkey基础学习

    原文地址https://blog.csdn.net/beyond_f/article/details/78543070 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手 ...

  6. 微博开源框架Motan初体验

    前两天,我在开源中国的微信公众号看到新浪微博的轻量Rpc框架--Motan开源了.上网查了下,才得知这个Motan来头不小,支撑着新浪微博的千亿调用,曾经在2014年的春晚中有着千亿次的调用,对抗了春 ...

  7. 5.8 Components — Composing Components(组合组件)

    一.概述 当你通过和另外一个组件组合的时候,组件就会真正发挥它们的所有潜能.比如<ul>元素,只有<li>元素是适合作为它的子元素的.如果我们希望同样类型的行为,那么我们就必须 ...

  8. Migrating from Spring 3 to Spring 4 - org.springframework.scheduling.quartz.CronTriggerBean

    I'm trying to migrate from spring 3.0.5 to spring 4.1.X . Spring 3 has Class named as "org.spri ...

  9. JS判断输入值为正整数

    JS中的test是原来是JS中检测字符串中是否存在的一种模式,JS输入值是否为判断正整数代码: <script type=”text/javascript”> function test( ...

  10. POJ 3436 ACM Computer Factory(最大流+路径输出)

    http://poj.org/problem?id=3436 题意: 每台计算机包含P个部件,当所有这些部件都准备齐全后,计算机就组装完成了.计算机的生产过程通过N台不同的机器来完成,每台机器用它的性 ...