JAVA集合

Collection:

collection保存一个一个的对象,无序可重复

三个重要方法:

boolean add(Object obj) 添加方法
boolean contains(Object obj) 查看是否包含
boolean remove(Object obj) 删除
int size() 查看个数

set:

为Collection子类。

set特点:无序不可重复。

HashSet(实现子类),使用哈希算法实现的set集合。

对象重复的标准,两个对象的equals为true,并且两个对象的hashcode相等。

所以自定义类想要去重,必须在类中重写hashcode和equals.。

image


重写的方法为:

image

所以输出结果为:

image

___________________________________________________________________________________________________________________________________________________________________________________

TreeSet(实现子类),基于二叉搜索树实现的set集合,所以不能比较大小的不能放入。不能互相比较大小的也无法放入。

对象重复的标准:两个对象的Compare为0。

注:如果对象可以比较大小但是有比较器的存在,以比较器为准。

自然排序:对象之间自己比较大小。

定制排序:通过比较器比较。

image

因为重写了比较方法,所以结果为:

image


比较器:

image

image

image

——————————————————————————————————————————————————————————————————————————————

List:

List特点:有序可重复。

void add(int index, Object ele) 在指定下标处插入新元素
Object get(int index) 获取指定下标处的元素
Object remove(int index) 删除指定下标处的元素, 返回被删除的元素
Object set(int index, Object ele) 替换指定下标处的元素为新元素。

ArrayList(实现子类) : 基于数组实现的List集合。

ArrayList : 基于数组实现的List集合 : 适用场景 : 偶尔插入元素, 绝大多数时间在检索. 适用于存档数据
缺点 : 要求内存必须连续, 对内存要求高
非末端插入或删除数据最慢, 因为大量元素的移动
优点 : 末端插入或删除数据非常快, 直接由计数器控制.

LinkedList(实现子类) : 基于链表实现的List集合

基于链表实现的List集合. 适用场景 : 频繁修改元素, 偶尔检索.
优点 : 对内存要求低. 不要求连续
插入和删除操作都非常快
缺点 : 检索速度最慢

image

image

迭代器:

迭代器 : 是集合的一个观察者. 通过和它交互可以达到和集合交互的目的.
  *      1) 向集合要迭代器, 通过调用iterator()方法来获取
  *      2) 在循环中先判断当前迭代器内部的游标后面是否有元素. hasNext()
  *      3) 如果有元素, 进入循环体, 不客气,调用next() 真的拿到后面的元素, 并且要下移游标.
  *
  *  int[] arr
  * 泛型 : 约束集合, 让其中的对象的类型固定化. 解决数据类型的安全问题.
  * 集合类型名称<元素的数据类型> 引用 = new 集合类型<元素的数据类型>();
  * 集合中只能添加泛型类型指定的对象, 所以安全
  * 获取集合中的元素时, 直接获取的是泛型类型的对象, 所以方便.
 
  * 适用于确定的知道集合中的元素类型是固定的.

image

image
——————————————————————————————————————————————————————————————————————

Map:


  * Map : 保存一对一对的对象
  * 自定义比较器, 可以实现定制排序

Map : 保存的是具有映射关系的key-value对象.
* 内部可以看作是由两个子集合组成, 保存所有键对象的是一个Set子集合
* 保存所有值对象的是一个Collection子集合.
*
* 如果简单的看, 它就是一个特殊的Set,每个元素都是称为Entry条目的对象
* 条目就是双对象的集合体.(有键又有值)
*
* put(Object key, Object value); // 放入一个词条, 包括键对象和值对象
* Object get(Object key); // 根据参数给定的键对象获取到相应的值对象
* Set keySet() // 获取保存所有键对象的Set子集合
* Set entrySet(); // 获取保存所有条目对象的Set集合.
*
* 典型实现子类
*      HashMap : 使用哈希算法实现的Map集合
*      TreeMap : 使用二叉树实现的Map集合

——————————————————————————————————————————————————————————————————————

posted @ 2020-11-16 21:25  叮叮不当!  阅读(80)  评论(0)    收藏  举报