转载自:http://liuguoquan727.github.io/2015/12/18/Java%E9%9B%86%E5%90%88%E4%B9%8BArrays%E5%92%8CCollections/

叙述

比较Arrays和Collections

解析

Arrays

java.util.Arrays

Array是Java特有的数组。在你知道所要处理数据元素个数的情况下非常好用。java.util.Arrays 包含了许多处理数据的实用方法:

Arrays.asList:可以从 Array 转换成 List。可以作为其他集合类型构造器的参数。

Arrays.binarySearch:在一个已排序的或者其中一段中快速查找。

Arrays.copyOf:如果你想扩大数组容量又不想改变它的内容的时候可以使用这个方法。

Arrays.copyOfRange:可以复制整个数组或其中的一部分。

Arrays.deepEquals、Arrays.deepHashCode:Arrays.equals/hashCode的高级版本,支持子数组的操作。

Arrays.equals:如果你想要比较两个数组是否相等,应该调用这个方法而不是数组对象中的 equals方法(数组对象中没有重写equals()方法,所以这个方法之比较引用而不比较内容)。这个方法集合了Java 5的自动装箱和无参变量的特性,来实现将一个变量快速地传给 equals() 方法——所以这个方法在比较了对象的类型之后是直接传值进去比较的。

Arrays.fill:用一个给定的值填充整个数组或其中的一部分。

Arrays.hashCode:用来根据数组的内容计算其哈希值(数组对象的hashCode()不可用)。这个方法集合了Java 5的自动装箱和无参变量的特性,来实现将一个变量快速地传给 Arrays.hashcode方法——只是传值进去,不是对象。

Arrays.sort:对整个数组或者数组的一部分进行排序。也可以使用此方法用给定的比较器对对象数组进行排序。

Arrays.toString:打印数组的内容。

如果想要复制整个数组或其中一部分到另一个数组,可以调用 System.arraycopy方法。此方法从源数组中指定的位置复制指定个数的元素到目标数组里。这无疑是一个简便的方法。(有时候用 ByteBuffer bulk复制会更快。可以参考这篇文章).

最后,所有的集合都可以用T[] Collection.toArray( T[] a ) 这个方法复制到数组中。通常会用这样的方式调用:

return coll.toArray( new T[ coll.size() ] );

这个方法会分配足够大的数组来储存所有的集合,这样 toArray 在返回值时就不必再分配空间了。

Collections

java.util.Collections

就像有专门的java.util.Arrays来处理数组,Java中对集合也有java.util.Collections来处理。

第一组方法主要返回集合的各种数据:

Collections.checkedCollection / checkedList / checkedMap / checkedSet / checkedSortedMap / checkedSortedSet:检查要添加的元素的类型并返回结果。任何尝试添加非法类型的变量都会抛出一个ClassCastException异常。这个功能可以防止在运行的时候出错。//fixme

Collections.emptyList / emptyMap / emptySet :返回一个固定的空集合,不能添加任何元素。

Collections.singleton / singletonList / singletonMap:返回一个只有一个入口的 set/list/map 集合。

Collections.synchronizedCollection / synchronizedList / synchronizedMap / synchronizedSet / synchronizedSortedMap / synchronizedSortedSet:获得集合的线程安全版本(多线程操作时开销低但不高效,而且不支持类似put或update这样的复合操作)

Collections.unmodifiableCollection / unmodifiableList / unmodifiableMap / unmodifiableSet / unmodifiableSortedMap / unmodifiableSortedSet:返回一个不可变的集合。当一个不可变对象中包含集合的时候,可以使用此方法。

第二组方法中,其中有一些方法因为某些原因没有加入到集合中:

Collections.addAll:添加一些元素或者一个数组的内容到集合中。

Collections.binarySearch:和数组的Arrays.binarySearch功能相同。

Collections.disjoint:检查两个集合是不是没有相同的元素。

Collections.fill:用一个指定的值代替集合中的所有元素。

Collections.frequency:集合中有多少元素是和给定元素相同的。

Collections.indexOfSubList / lastIndexOfSubList:和String.indexOf(String) / lastIndexOf(String)方法类似——找出给定的List中第一个出现或者最后一个出现的子表。

Collections.max / min:找出基于自然顺序或者比较器排序的集合中,最大的或者最小的元素。

Collections.replaceAll:将集合中的某一元素替换成另一个元素。

Collections.reverse:颠倒排列元素在集合中的顺序。如果你要在排序之后使用这个方法的话,在列表排序时,最好使用Collections.reverseOrder比较器。

Collections.rotate:根据给定的距离旋转元素。

Collections.shuffle:随机排放List集合中的节点,可以给定你自己的生成器——例如java.util.Random / java.util.ThreadLocalRandom or java.security.SecureRandom。

Collections.sort:将集合按照自然顺序或者给定的顺序排序。

Collections.swap:交换集合中两个元素的位置(多数开发者都是自己实现这个操作的)。

Java集合之Arrays和Collections相关推荐

  1. java迭代器创建后mutx锁,java集合【5】—— Collections接口源码解析

    一.Collections接口是做什么的? 用官网文档的介绍:The polymorphic algorithms described here are pieces of reusable func ...

  2. Java 集合 List Arrays.asList

    2019独角兽企业重金招聘Python工程师标准>>> 参考链接:阿里巴巴Java开发手册终极版v1.3.0 [强制]使用工具类 Arrays.asList()把数组转换成集合时,不 ...

  3. Java集合工具类:Collections

    Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里 提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象实现同步控制等方法. 一. 排序 ...

  4. java集合进行排序的两种方式

    java集合的工具类Collections中提供了两种排序的方法,分别是: Collections.sort(List list) Collections.sort(List list,Compara ...

  5. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  6. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用

    java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...

  7. java array 元素的位置_介绍java中的两种排序工具Arrays和Collections

    java中的排序工具主要是有两个Arrays和Collections.我们一个一个来讲解. 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可.因为 ...

  8. Java SE基础知识详解第[12]期—集合(Set、Collections、Map、集合嵌套)

    写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...

  9. Java集合篇:Map接口、Map接口的实现类、Collections集合工具类

    目录 一.Map接口 1.1 Map接口概述 1.2 Map接口常用功能 二.Map接口的实现类 2.1 Map实现类之一:HashMap 2.1.1 HashMap概述 2.1.2 HashMap的 ...

最新文章

  1. tidb mysql 协议_TiDB源码阅读(二) TiDB中的MySQL协议
  2. 本地nginx多域名映射
  3. spring源码分析之spring-core asm概述
  4. visual studio系列(vs)启动调试网站使用ip+端口局域网访问
  5. 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则
  6. Wordfence Premium 安全防护 WordPress插件
  7. linux下双击sh文件夹,Linux系统下如何运行.sh文件的实现
  8. linux mmap实例_Linux下通过共享内存和mmap实现进程间通讯(含实例)
  9. cpld的入门交流之三:JED to ABL 反编译方法
  10. 视频压制探索与B站视频压制参数解析
  11. bp神经网络算法的优缺点,bp神经网络算法的优点
  12. 火星坐标系和百度坐标系的经纬度相互转换
  13. MATLAB数值分析学习笔记:黄金分割法
  14. 常见的服务器报错数字的意思
  15. 文旅夜游——让城市夜晚更加绚烂多彩
  16. Appfuse创建网站访问慢的问题
  17. java开发报错怎么处理_Java开发中常见报错及解决办法
  18. GBase 8s灾备集群HAC (四) 异地灾备RSS
  19. 两个向量构成的平行四边形面积的求解 ————简单技巧
  20. Go语言学习1-基础入门

热门文章

  1. MySQL中处理空值时要小心两个个陷阱
  2. python写作_学会Python实现学写作
  3. Go语言 Google资深工程师深度讲解
  4. Android 实现屏幕录制并剥离环境音量实现
  5. [附源码]计算机毕业设计甜品购物网站Springboot程序
  6. 美男有毒html5游戏在线玩,美男有毒h5在线
  7. 自己比较喜欢的几句话,激励自己的IT生涯继续前进
  8. 基于MATLAB Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型
  9. 使用encode方法防止XSS攻击
  10. java文件头工具类_判断文件类型工具类