Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
给你java学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
集合框架定义
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
除了集合,该框架也定义了几个Map接口和类。Map里存储的是键/值对。尽管Map不是collections,但是它们完全整合在集合中。
二、List 接口
1、ArrayList 的使用
ArrayList 是一个集合容器类。
1、ArrayList 的构造方法
2、 ArrayList 方法
测试ArrayList:
2、LinkedList 使用
基于链表结构的集合 LinkedList。LinkedList 属于 java.util 包下面,也实现Iterable接口,说明可以使用迭代器遍历;LinkedList 还实现 Deque,Queue 操作。Deque 和 Queue 是 LinkedList 的父接口,那么 LinkedList 也可以看成一种 Deque 或者 Queue;Queue表示一种队列,也是一种数据结构,它的特点是先进先出,因此在队列这个接口里面提供了一些操作队列的方法,同时LinkedList也具有这些方法;Deque(Double ended queues双端队列),支持在两端插入或者移除元素; 那也应该具有操作双端队列的一些方法;LinkedList是他们的子类,说明都具有他们两者的方法;LinkedList也可以充当队列,双端队列,堆栈多个角色。
1、 LinkedList 构造方法
2、 LinkedList 方法
测试 LinkedList:
3、 ArrayList 和 LinkedList 的区别
ArrayList 和 LinkedList 都是线程不安全的。
ArrayList 是 List 接口的一种实现,它是使用数组来实现的,即使用数组方式存储。
LinkedList 是 List 接口的一种实现,它是使用链表来实现的,即使用双向链表实现存储。
ArrayList 遍历和查找元素比较快。LinkedList 遍历和查找元素比较慢。
ArrayList 添加、删除元素比较慢。LinkedList 添加、删除元素比较快。
三、set 接口
1、HashSet
不能添加重复的元素,并且是无序的。
HashSet判断是否相同的规则: ①判断hashcode ②判断equals ,如果两个对象的hashCode值相等,并且equals返回为true 就表示相等(重复)。
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
2、TreeSet
TreeSet 和 HashSet 很多方面也是类似的;特点和 HashSet 也是一样的;
TreeSet 的特点:不能添加重复元素,无序的(不记录添加顺序)。
2.1 TreeSet 排序
1、自然排序
自然排序:此接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序。
可以让类实现 Comparable 接口,通过 compareTo(Object obj) 方法,如果方法返回 0 表示相等,否则不等。
实现了 Comparable 接口的 student 类:
2、定制排序
如果没有实现 Comparable 接口,需要自定义一个类,实现 Comparator 接口,覆写比较方法;
比较器的实现代码:
3、TreeSet 自然排序和定制排序的区别
一般来说,先写一个比较规则,让它实现 Comparable 接口,作为默认的比较规则,如果不写比较器,则比较使用默认规则,如果觉得默认比较规则不够好,可以自己写个比较器,当通过存在默认比较规则和比较器时,优先选择使用比较器,因为比较器更能满足需求。
测试TreeSet:
3、HashSet 和 TreeSet 总结
HashSet特点:不重复,无序(通过 hashCode 方法和equals 方法,判断重复)。
TreeSet 特点:不重复,无序(添加顺序与打印顺序不一样),但是打印顺序按照一定规则排序;排序有自然排序和定制排序。
四、Map 接口
Map 简单理解成映射;
Map:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能包含一个值。
1、hashMap
1、hashMap 的构造方法
2、hashMap 的方法
3、测试 hashMap
具体测试代码:
小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
2、Map小结
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。
Map接口
HashMap 判断重复的标准和HashSet一致,通过键的 hashCode 和 equals;
TreeMap 判断重复的标准和TreeSet一致,1:通过自然排序(Comparable 接口),2:定制排序(Compartor 比较器)。
五、集合算法 Collections
完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。例如:搜索和排序。
1、Collections 的方法
上面是 Collections 类的一些常用方法,具体所有方法,可以自己查看API文档。
测试 Collections 的一些常用方法: