码迷,mamicode.com
首页 > 编程语言 > 详细

学习java第15天个人总结

时间:2017-04-24 23:21:49      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:key   实现   strong   实现类   属性   top   key值   不同的   hashcode   

Day15个人总结

一、Object类

1、概念:

Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

2、Object几个重要方法的使用

1)toString方法

默认情况下是返回内存的地址,我们在打印对象的时候,程序默认就会调用toStrin方法我们可以通过重写toString方法让其放回属性值

2)hashCode方法

hashCode方法打印出来的是一串内存根据一定的运算得到的地址,主要作用是用来判断是否同一个对象

3)equals方法

在Object类中equals放比较的是地址,可以通过重写这个方法使其比较内容

 

 

二、set集合

1、概念:

Set集合是一个无序的不允许重复的集合,所谓的不允许重复式指在set集合中如果存取对象,默认情况下会去调用hashCode和equals方法来比较对象是否相等,set结合的底层是Map集合的key,所以是无序的,下面介绍set集合的HashSet的实现类以及TreeSet实现类

 

2、Hashset

通过创建对象使用如下:

Set<Person> set = new HashSet<>();

以上的“<>”表示泛型与之前的List集合类似,hashset在向集合中添加数据的时,程序会自动调用hashCode方法获取hashCode值,结果如果不同则认为是不同对象,并添加到集合中,如果hashCode相同,再去调用equals方法比较各个属性的值,进一步确认是否是同一个集合,如果都相同则不添加

如果向集合中添加自定义的对象时(除String数据类型和基本数据类型,也就是除去系统自带的数据类型以外),就需要程序员去重写hashCode方法以及equals方法来判断两个对象是否相等,如果相等则不添加到集合中,如果不相等则添加,如果不重写这两个方法将会报以下错误(类型转化异常):

 

原因是因为自定义建的class中没有重写hashCode和equals方法,那么集合在判断两个对象的时候,无法进行判断,所有就会报错

 技术分享

 

3、TreeSet

通过创建对象使用如下:

TreeSet<Integer> set = new TreeSet<>();

TreeSet集合和hashSet集合不同的是,TreeSet是按照自然顺序对集合进行排序,在向集合中添加数据的时候如果需要派逊,就需要去实现和重写接口Comparable中的compareTo()方法来判断两个对象是否相等并且根据各属性情况来对集合中的对象进行排序,并且可以帮助去除重复,如果调用者大于参数return正数代表升序,反之代表降序

 

4、TreeSet之定制排序(Comparator

定制排序是通过创建一个新的类来实现Comparator接口中的Comparable方法来实现定制排序,定制排序是利用了TreeSet的构造方法,可以向构造方法中直接传入自己写好的定制排序使如下:

TreeSet<Student> treeSet2 = new TreeSet(new MyComparator());

其中Comparator()为程序员写好的定制排序的类,示例如下:

 技术分享

 

 

三、Map集合

1、概念:

Map集合是由键值key和值value值组成,键值是唯一的,value值是允许重复的,key值和value值是一一对应的,key值是唯一不变的额,可以通过key值找到内容,如果key值有重复,那么新加入的key值内容将会覆盖旧key值的内容,Map集合主要是用来统一管理集合

2、Map集合的使用和遍历

HashMap<String, String> map = new HashMap<>();

遍历如下:

 技术分享

 

学习java第15天个人总结

标签:key   实现   strong   实现类   属性   top   key值   不同的   hashcode   

原文地址:http://www.cnblogs.com/lilinxiong/p/6758947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!