Java集合类

  • Java集合类
    • 一、Collection
      • 1. List(接口)
      • 2.Set(接口)
      • 3.Queue(接口)
      • Collection主要实现类特点
    • 二、Map:
    • 三、Collections工具类
    • 四、Arrays工具类
    • 五、集合排序问题
      • 1.默认自然排序
      • 2.自定义排序
        • (1)使用Comparator接口
        • (2)使用Comparable接口
        • (3)Comparator与Comparable接口比较

Java集合类

Java集合类包括两个根接口:Collection和Map。

一、Collection

包括Set、Queue、List。

1. List(接口)

​ List 接口继承了 Collection 接口,定义一个允许重复项的有序集合;按照对象进入顺序进行保存对象,List集合就像是一个数组,有序,长度可变

特点: 有序集合、有重复

操作 :add()、get()、set()、size()、remove()等

常用的实体类: ArrayList等

包括的实体类: ArrayList、Vector、Stack等

具体描述见下图:

2.Set(接口)

Set 接口继承了 Collection 接口,集合元素无序且无重复。

无重复原理:每个Set实现类依赖添加的对象的 equals() 方法来检查独一性,即任意两个元素e1和e2,都有e1.equals(e2)=false

特点: 无序集合、不可重复

操作 :add()、get()、set()、size()、remove()等

常用的实体类: HashSet、TreeSet等

包括的实体类: HashSet、TreeSet、EnumSet、LinkedHashSet等:

具体描述见下图:

3.Queue(接口)

特点: 队列(先进先出、有序表)

主要实现类有: PriorityQueue、ArrayDeque等

Collection主要实现类特点

二、Map:

Map接口含有两个部分(两列):关键字和值 (key-value,简称键值对);key不可重复,value可重复;添加数据时,如果key重复,则用新值替换原有的值。

操作: put(key,value)、remove()、clear()、size()、containsKey(Object key)、containsValue(Object value)

常用实现类: HashMap、TreeMap

具体描述见下图:

三、Collections工具类

Collections是针对集合的工具类,提供了排序、反转、求最值、二分查找等功能, 大大提高了开发人员工作效率。

Collections常用方法 说明
sort(List< T> list) 根据自然顺序(升序)对指定list集合排序
sort(List< T> list,Comparator< ? super T> c) list-集合;c比较器:按指定比较器c为list排序
max(Collection< ? extends T> collection) 根据自然顺序(升序)排序,返回collection的最大元素
min(Collection< ? extends T> collection) 根据自然顺序(升序)排序,返回collection的最小元素
binarySearch(List<>list,T key) list-集合,key-指定对象:对List二分查找key(必须先自然升序排序)
reverse(List list) 反转List元素的顺序

四、Arrays工具类

Arrays是针对数组的工具类,提供了排序,查找,二分查找等功能。

Arrays常用方法 说明
sort(array) 对指定的基本数据类型数组array按升序排列
equals(array1,array2) 如果两个指定的基本数据类型数组相等返回true
binarySearch(array,val) 对基本数据类型数组array进行二分查找val
toString(array) 把基本数据类型数组array内容转换为字符串

五、集合排序问题

1.默认自然排序

Collections.sort(List list)可以实现元素的自然排序。

自然排序定义: { (x, y) | x.compareTo(y) <= 0 } 从小到大排序

2.自定义排序

​ 自定义排序有两种方法:

  • 使用Comparator接口
  • 使用Comparable接口

(1)使用Comparator接口

  1. 先自定义一个比较器类实现 java.util.Comparator 接口
  2. 然后调用Collections.sort(List list, Comparator c) 完成自定义排序
class myComparator implements Comparator{@Overridepublic int compare(Object o1, Object o2) { // 实现compare()方法int x = (int) o1;int y = (int) o2;if( x > y )return -1;elsereturn 1;}
}public class Test {public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>();list.add(100);list.add(50);list.add(120);Collections.sort( list, new myComparator() );System.out.println( list ); // [120,100,50]}
}

(2)使用Comparable接口

  1. 在定义对象类时实现比较接口 java.lang.Comparable,实现接口的 int compareTo(Object o) 比较方法 (1个参数)
  2. 然后调用 Collections.sort( List list ) 完成自定义排序
class Point implements Comparable {int x; int y;public Point() { }public Point(int x, int y) { this.x = x; this.y = y; }@Overridepublic String toString() {return "[x = " + x + ", y = " + y + "]";
}
@Override
public int compareTo(Object o) { //实现compareTo()方法Point p = (Point) o;if ( this.x != p.x )return this.x - p.x;elsereturn this.y - p.y; }
}

(3)Comparator与Comparable接口比较

  • Comparator是在集合外部实现的排序,Comparable是在集合内部实现的排序;一个类实现了Camparable接口则表明该类对象之间是可相互比较的,该类对象组成的集合就可以直接使用Collections.sort()排序
  • Comparator一种比较器,能将算法和数据分离,通过Comparator来实现排序而不必改变对象本身
  • 可定义多种Comparator为同一个集合对象使用

Java集合类总结(详细)相关推荐

  1. java集合类详细概述

    2019独角兽企业重金招聘Python工程师标准>>> Java集合类   集合中存放的是对象的引用,而非对象本身 ,出于表达上的便利,简称为"集合中的对象". ...

  2. java集合类深入分析之TreeMap/TreeSet篇

    2019独角兽企业重金招聘Python工程师标准>>> 简介 TreeMap和TreeSet算是java集合类里面比较有难度的数据结构.和普通的HashMap不一样,普通的HashM ...

  3. java集合类(简介)

    JAVA集合类(介绍) 在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的"抉择" ...

  4. Java集合类学习总结

    Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/colum ...

  5. java trove_[XMLer的生活]可使用基本类型作为键值的Java集合类-Trove 集合类

    性能观察:Trove 集合类更小.更普通.更易上手 级别: 中级 Trove 是一种开放源代码的 Java 集合包,提供了核心 Java 集合类的高效替代品,特别针对于实现其键或值是基本类型的集合.本 ...

  6. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

  7. 面试江湖:一招破解 Java 集合类面试题

    点击上方"程序员江湖",选择"置顶或者星标" 你关注的就是我关心的! 今日招式:Java集合类面试题 Java集合类绝对是我们的老朋友了,Java技术江湖里,谁 ...

  8. Java 集合类详解

    0.参考文献 http://blog.csdn.net/liulin_good/article/details/6213815 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比 ...

  9. 【JAVA集合类(大公司面试喜欢问的) 】

    看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧. java.util包中包含了一系列重要的集合类,而对于集合类,主要 ...

最新文章

  1. idea没有git选项
  2. Angular16 Angular整合zTree、异步加载节点数据
  3. (mac)阿里云ECS服务器配置过程
  4. Nignx出现failed (3: The system cannot find the path specified)问题
  5. 天下无难试之Redis面试刁难大全「原创」
  6. 对话 “智能+”平台大师,看IBM如何重塑企业数字化
  7. Tomcat启动出现乱码
  8. GIS地图点汇聚及空间搜索算法Java实现样例
  9. TCP 三次握手和四次挥手,中间失败了会发生什么?
  10. 3600S软件测试工资,软件测试工资能拿到多少?谁说软件测试收入低?
  11. 双重差分模型能做固定效应吗_双重差分法的平行趋势假定
  12. Android零基础入门第1节:Android的前世今生
  13. 概率算法1-应用定积分计算
  14. ecshop $lang
  15. kubernetes(k8s)部署报错问题解决
  16. 【基础教程】法线贴图原理与制作 粗解
  17. CAD2023精简版安装教程附下载地址
  18. Oracle 常用函数练习题含答案
  19. java实现链表冒泡排序_单链表的冒泡排序
  20. 服务器芯片制冷,新一代元件级热管式自然冷却液冷技术的解决方案

热门文章

  1. Android绘制垂直进度条并且动态更改进度条颜色
  2. 【第50题】常用的数学工具类7-高精度浮点运算
  3. iOS学习——Quartz2D学习之UIKit绘制
  4. 【转载】曾经有一份真挚的爱情
  5. 基于Android实现的减肥塑身平台APP
  6. 科普|一体化污水处理设备生物膜的形成及挂膜调试
  7. 小孩子用什么台灯比较好?2023真正适合孩子的护眼台灯盘点
  8. B站设置NFT小钻石头像教程
  9. sql语句之CONCAT 函数
  10. mysql字符串排序