一、集合(定义字段的时候统一使用包装类

1、集合大类分为List、Set、Map三种,其中,List集合是有序可重复的,并且可以使用普通for循环、增强for循环、正向迭代器、双向迭代器;Set集合是无序不可重复的,不可以使用普通for循环和双向迭代器,只能使用增强for循环和正向迭代器;Map集合也是无序不可重复的,只能存储键值对(也就是我们太容易对象),Map集合本身不能使用任意的循环方式。

二、Set集合

1、HashSet集合(HashSet集合里面传入了匿名对象的话,那么它的删除也是根据HashCode和equals方法来判断的。)

HashSet集合是无序、不可重复的,它的底层是使用了HashMap实现的,HashMap的底层是数组和链表实现的;无序指的是增加元素的顺序和取出元素的顺序不一定一致,不可重复是因为它使用了通过首先获取HashCode值,再通过Hash算法将HashCode值算出索引,最后比较equals方法来决定两个值是否重复(其中,如果两个数据通过HashCode值算出的索引一致,那么会在同索引处比较equals方法,如果不一致,则会通过链表结构将数据挂在此索引的位置,如果算出的索引一致,那么就不会使用equals方法)(其实你的HashCode值相等,通过Hash算法算出的索引也就像等,所以不必强调这个)

Set的继承特点:

Set 无序的,不可重复的,不能使用普通for循环和双向迭代器

|

|__HashSet   TreeSet

List  有序的,并且数据可重复的可以使用偏头痛for循环、增强for循环、正向迭代器、双向迭代器

|

|___ArrayList   LinkedList

2、TreeSet集合

TreeSet集合特点:无序(添加元素的顺序和取出元素的顺序不一定是相同的)、不可重复的(判断重复的方法:

①compareTo方法返回0,表示相等;②compare方法返回0,则表示相等),是基于二叉树实现的。

包装类都实现了comparable接口,因此都覆写了compareTo方法(具有了排序功能),一个普通类的对象本身是没有排序的功能的,但是由于实现了Comparable接口,因此对象就具有了排序的功能。

CompareTo方法如果返回正数、或者负数都会按照不一致的自然方法进行排序,但是如果返回0,则表示对象都相等,意味着TreeSet集合只存储了第一个元素

注意:TreeSet集合内部没有实现ListIterator接口,因此不能使用双向迭代器,又因为TreeSet集合是无序的,因此不能够使用普通for循环(不能按照指定的索引取到值)

注意:TreeSet容器存储的值必须要拥有自然排序或者定制排序(比较器)的能力

如果一个类实现了Comparator接口,那么这个类就是一个比较类,在TreeSet集合中有一个构造方法是

TreeSet(SortedSet<E> s) 构造一个按照比较类规则来进行比较集合中元素的方法,然后将这个比较类的对象传入集合的对象中,就可以使用定制排序(比较器)了(最好使用匿名内部类)。

最新文章

  1. Smarty的基本使用与总结
  2. Login控件尝试
  3. 前端构建工具gulp使用
  4. [Network] 计算机网络基础知识总结
  5. php注意事项2
  6. Jade之Template Inheritance
  7. C#设计模式(18)——中介者模式(Mediator Pattern)
  8. Python学习笔记-Day3-文件操作
  9. -bash: ./radar.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录
  10. a href=#与 a href=javascript:void(0) 的差别
  11. winform datagridview如何获取索引 分类: DataGridView 2014-04-11 13:42 216人阅读 评论(0) 收藏
  12. opencv 用户文档 错误更正 仿射变换
  13. Struts2利用注解实现action跳转
  14. 201521123115《Java程序设计》第7周学习总结
  15. Database First/Code First
  16. git 入门教程之里程碑式标签
  17. iOS的SVN
  18. openssl版本升级操作记录
  19. 2017年3月29日 webService入门理解 二
  20. Oracle 连接数据库

热门文章

  1. 复选框checkbox——用背景图片替换样式
  2. 0. Java虚拟机系列备忘预览图
  3. Cmake出现CMake Error: Could not find CMAKE_ROOT !!!
  4. 基于IPV6的数据包分析(GNS3)
  5. iptables 防火墙日常
  6. Linux基础系统优化及常用命令
  7. C++与蓝图互调
  8. JSP+MySQL验证登录的实现方式
  9. hibernate 一对多 取多方数据重复问题,FetchMode.JOIN、FetchMode.SELECT、FetchMode.SUBSELECT区别
  10. xPath Helper插件