文档章节

Arrays用法整理

bharals
 bharals
发布于 2017/05/19 17:07
字数 511
阅读 7
收藏 1
点赞 0
评论 0

原文

本文将整理  java.util.Arrays 工具类比较常用的方法: 
本文介绍的方法基于JDK 1.7 之上。 
1.  asList方法  
@SafeVarargs
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
   使用该方法可以返回一个固定大小的List,如: 
List<String> stringList = Arrays.asList("Welcome", "To", "Java",
        "World!");

    List<Integer> intList = Arrays.asList(1, 2, 3, 4);
   
2. binarySearch方法 

binarySearch方法支持在整个数组中查找,如: 
int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 6);
以及在某个区间范围内查找, 如: 
public static int binarySearch(int[] a, int fromIndex, int toIndex,
                                   int key) {
        rangeCheck(a.length, fromIndex, toIndex);
        return binarySearch0(a, fromIndex, toIndex, key);
    }
int index = Arrays.binarySearch(new int[] { 1, 2, 3, 4, 5, 6, 7 }, 1, 6, 6);
3. copyOf及copyOfRange方法 

如: 
String[] names2 = { "Eric", "John", "Alan", "Liz" };


    //[Eric, John, Alan]
    String[] copy = Arrays.copyOf(names2, 3);
    
    //[Alan, Liz]
    String[] rangeCopy = Arrays.copyOfRange(names2, 2,
        names2.length);
4. sort方法 
String[] names = { "Liz", "John", "Eric", "Alan" };
//只排序前两个
//[John, Liz, Eric, Alan]
Arrays.sort(names, 0, 2);
//全部排序
//[Alan, Eric, John, Liz]
Arrays.sort(names);
另外,Arrays的sort方法也可以结合比较器,完成更加复杂的排序。 
public static <T> void sort(T[] a, Comparator<? super T> c) {
        if (LegacyMergeSort.userRequested)
            legacyMergeSort(a, c);
        else
            TimSort.sort(a, c);
    }
5. toString方法 
Arrays的toString方法可以方便我们打印出数组内容。 
如: 
String[] names = { "Liz", "John", "Eric", "Alan" };
  Arrays.sort(names);
  System.out.println(Arrays.toString(names));
控制台将打印出  [Alan, Eric, John, Liz] 
6. deepToString方法
 
如果需要打印二维数组的内容: 
int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } }; 
如果直接用
System.out.println(Arrays.toString(stuGrades));
那么得到的结果类似于 
     [[I@35ce36, [I@757aef, [I@d9f9c3]} 
这个时候得用  deepToString 方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]] 
System.out.println(Arrays.deepToString(stuGrades));
7. equals方法 
使用Arrays.equals来比较1维数组是否相等。 
String[] names1 = { "Eric", "John", "Alan", "Liz" };

    String[] names2 = { "Eric", "John", "Alan", "Liz" };

    System.out.println(Arrays.equals(names1, names2));
8. deepEquals方法 
Arrays.deepEquals能够去判断更加复杂的数组是否相等。 
int[][] stuGrades1 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };

    int[][] stuGrades2 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };

    System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));
9. fill方法 
int[] array1 = new int[8];
    Arrays.fill(array1, 1);
    //[1, 1, 1, 1, 1, 1, 1, 1]
    System.out.println(Arrays.toString(array1));

© 著作权归作者所有

共有 人打赏支持
bharals
粉丝 0
博文 26
码字总数 46307
作品 0
Java集合框架:总结

最近博主对于Java集合框架这个系列做了一个整理,主要包括: Map系:HashMap, LinkedHashMap, TreeMap, WeakHashMap, EnumMap; List系:ArrayList, LinkedList, Vector, Stack; Set系:HashS...

u013256816 ⋅ 2016/03/18 ⋅ 0

二进制数据解析器和构建器--Construct

Construct是一款声明式的二进制数据解析器和构建器。 简而言之,它是对标准模块struct的封装和增强,适用于描述基于二进制数据通信协议的数据结构,可视为二进制数据的Python ORM库。 概述 ...

匿名 ⋅ 2017/04/08 ⋅ 0

Arrays.asList的用法:

Arrays.asList 返回数组而非List。 List的一个典型的特性就是其长度是可变的,我们可以很方便地对它进行插入和删除元素的操作,这是它与数组所存在的一个很大的区别,后者的长度是固定的,而...

文文1 ⋅ 2015/09/09 ⋅ 0

Java程序员的日常—— Arrays工具类的使用

这个类在日常的开发中,还是非常常用的。今天就总结一下Arrays工具类的常用方法。最常用的就是asList,sort,toStream,equals,copyOf了。另外可以深入学习下Arrays的排序算法,这个还是非常有用...

青夜之衫 ⋅ 2017/12/05 ⋅ 0

java基础知识003——条件、循环语句、数组

条件语句——if语句和switch语句的区别 1.if语句格式及其使用 if语句的格式: if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } ... else...

尚洪范 ⋅ 2017/12/03 ⋅ 0

java中数组与List相互转换的方法

1.List转换成为数组。(这里的List是实体是ArrayList)   调用ArrayList的toArray方法。   toArray   public <T> T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组...

Carl_ ⋅ 2014/09/16 ⋅ 0

Objective-C ---NSArray(梳理整理)

NSArray NSArray 和NSDictionary都是oc中的集合类,什么叫做集合,就是装对象的对象 NSArray是有序的 NSDictionary是无序的 1.创建方式 a.[[NSArray alloc] initWithArray:arr1];(用本身创建...

都英俊兮 ⋅ 2016/05/18 ⋅ 0

Thymeleaf教程 (四) Thymeleaf标准表达式语法(上)

我们已经知道了两种语法 但是还有很多语法我们不知道,接下来我们快速的介绍更多的表达式语法: 简单表示式: 变量表达式: ${…} 选择变量表达式: *{…} 信息表达式: #{…} URL连接表达式: @...

wangxinxx ⋅ 2016/12/13 ⋅ 0

POJ 1007 -- DNA Sorting

DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 94974 Accepted: 38197 Description One measure of unsortedness'' in a sequence is the number of pairs of en......

圣洁之子 ⋅ 2016/05/27 ⋅ 0

perl编程的部分问题总结

最近一直在做perl项目,苦苦钻研了四天就开始perl编码,对首次编写perl程序来说确实遇到了一些很大的问题,诸如子程序中hashmap及数组的转递,参数的调用啊,及一些Demical性质的数据处理啊,...

小T小刘 ⋅ 2013/02/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 1分钟前 ⋅ 1

【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项

lgsxp ⋅ 9分钟前 ⋅ 0

Day18 vim编辑模式、命令模式与练习

编辑模式 命令模式 :nohl 不高亮显示 :x与:wq类似,如果在更改文件之后操作,两者效果一样;如果打开文件,没有任何操作; :wq会更改mtime,但是:x不会。 练习题 扩展 vim的特殊用法 ht...

杉下 ⋅ 13分钟前 ⋅ 0

Enum、EnumMap、EnumSet

1、Enum 不带参数 public enum Car { AUDI { @Override public int getPrice() { return 25000; } }, MERCEDES { ......

职业搬砖20年 ⋅ 14分钟前 ⋅ 0

Java中的锁使用与实现

1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 在Lock出现之前,java程序是靠synchronized关键字实现锁功能的,而Java SE5之后,...

ZH-JSON ⋅ 15分钟前 ⋅ 0

线程组和 ThreadLocal

前言 在上面文章中,我们从源码的角度上解析了一下线程池,并且从其 execute 方法开始把线程池中的相关执行流程过了一遍。那么接下来,我们来看一个新的关于线程的知识点:线程组。 线程组 ...

猴亮屏 ⋅ 16分钟前 ⋅ 0

相对路径和绝对路径

基本概念   文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。在网页设计中通过路径可以表示链接,插入图像、Flash、CSS文件的位置。   物理路径:物理路...

临江仙卜算子 ⋅ 20分钟前 ⋅ 0

消息队列属性及常见消息队列介绍

什么是消息队列? 消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消...

中间件小哥 ⋅ 22分钟前 ⋅ 0

java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁 ⋅ 23分钟前 ⋅ 0

vim编辑模式、vim命令模式

vim编辑模式 使用vim filename 进入的界面是一般模式,在这个模式下虽然我们能够查看,复制,剪切,粘贴,但是不能编辑新的内容,如何能直接写入东西呢?这就需要进入编辑模式了,从一般模式...

李超小牛子 ⋅ 25分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部