Javase 集合框架笔记

Iterator 接口是对所有的Collection容器进行元素取出的公共接口。


List集合元素可以重复,可以完成对元素的增删改查。

List:
|– Vector:内部是数组数据结构,是同步的。增删,查询速度都很慢!
|– ArrayList:内部是数组数据结构,是不同步的。替代了vector。查询元素的速度非常快。
|– LinkedList:内部是链表数据结构,是不同步的。增删元素的速度非常快。


Set集合元素不可以重复,是无序的。

Set:
|– HashSet: 内部数据结构是哈希表,是不同步的。

  **如何保证该集合元素的唯一性:  

是通过对象的hashCode方法和equals方法来完成的。
如果对象的hashCode值不同,那么不用判断equals方法,直接存储到哈希表中;
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。

记住:如果元素要存储到hashSet集合中,必须覆盖hashCode和equals方法。
一般情况下,如果定义的类会产生很多对象,比如人,学生,书等等,通常都需要覆盖equals,
hashCode方法,建立对象判断是否相同的依据。

|– TreeSet:可以对Set集合中的元素进行排序,是不同步的。
判断元素唯一性的方式就是根据比较方法的返回结果是否为0。是0,就是相同元素,不存。

    TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元素需要实现Comparable接口,覆盖comparaTo方法。

如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序,怎么办?

    TreeSet对元素进行排序的方式二:
让集合自身具有比较功能,定义一个类实现Comparator接口,覆盖compare方法,并将该类对象作为参数
传递给TreeSet集合的构造函数。

看到array: 就要想到数组,就要想到查询快,有角标。
看到link: 就要想到链表,就要想到增删快,就要想到add get remove first last 的方法;
看到hash: 就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashCode方法和equals方法。
看到tree: 就要想到二叉树,就要想到排序,就要想到两个接口Comparable, Comparator。

而且通常这些常用的集合容器都是不同步的。


Map:一次添加一对元素;Collection一次添加一个元素;
Map也称为双列集合,Collection集合称为单列集合;
Map集合中存储的就是键值对。Map集合中必须保证键的唯一性;

常用方法:
1.添加
2.删除
3.判断
4.获取
Map常用的子类:
|–Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。

Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。         

|–HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
|–TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

扫描二维码关注公众号,回复: 5455667 查看本文章
    哈希表确定元素是否相同:
    1、 判断的是两个元素的哈希值是否相同;如果相同,再判断两个对象的内容是否相同。
    2、 判断哈希值相同,其实判断的是对象的hashCode的方法。判断内容相同,用的是equals方法。
    注意:如果哈希值不同,是不需要判断equals。

猜你喜欢

转载自blog.csdn.net/shenxinmou1661/article/details/81835578