A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2019-10-13 18:41  /  1173 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.为什么要重写HashCode和equals方法?
2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
4.泛型的作用和分类

8 个回复

倒序浏览
1.为什么要重写HashCode和equals方法?
当我们需要在Set集合里面添加元素的时候,为了能够获取有序的元素需要重写HashCode,获取每个对象或者元素的哈希值从而进行比对排序。
但是HashCode获取到的哈希值不能保证每一个不同元素的哈希值不同,这个时候就需要重写equals来比较元素内容,确保了Set集合的唯一性。

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
当需要进行集合元素自定义排序或者自然排序的时候需要重写HashCode,不需要就不用写。

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
两种
(1)自然排序:自然排序是在实现类中让它实现Comperable接口,重写compare To方法,耦合性、可修复性较强。
(2)比较器排序:比较器排序是在方法中采用匿名内部类的方式,当我们只需要一个实例的时候可以使用。

4.泛型的作用和分类
泛型分为泛型类、泛型方法和泛型接口。
泛型类:泛型类是在创建对象的时候才确定泛型(参数)的类型。例,在我们构造方法是不需要输入那么多确定类型的参数,只需要给一个泛型,在创建对象时再定义泛型。
泛型方法:泛型方法是在调用方法的时候才确定参数的类型。避免了强转。
泛型接口:在实现类实现接口的时候才确定类型。
回复 使用道具 举报
1.为什么要重写HashCode和equals方法?
为了避免元素重复及区分元素,使用HashCode计算出哈希值,对比两个元素的哈希值,如果哈希值不同则是两个不同的元素
如果哈希值相同,则继续用equals方法对两个元素的内容进行比较,如果不同则是两个不同的元素,如果相同则这两个元素重复。


2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
需要进行元素比较时就重写,不需要进行元素比较时则不写。


3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
有两种,一种是自然排序,一种是比较器排序。
自然排序是根据元素的自然顺序进行排序。
比较器排序则根据定义的排序规则进行排序。

4.泛型的作用和分类
泛型的作用是消除了强制类型转换 使得代码可读性好,减少了很多出错的机会。
泛型分为【1】含有泛型的类
             【2】含有泛型的方法
             【3】含有泛型的接口
回复 使用道具 举报

1.为什么要重写HashCode和equals方法?
为了使集合存储的数据如果不重复;
重写HashCode后可以使元素生成对应的哈希值,从而可以对元素进行比较哈希值的大小进行排序,如果哈希值不相等,直接存储
,如果哈希值相等,就使用equels比较元素的内容。内容相等则不储存,内容不相等则储存;

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
如果要保证元素的唯一性,需要重写HashCode方法;
如果允许元素重复,则不需要重写 ;

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
(1)自然排序:在类中实现Compareble接口,然后重写toCompare
(2)比较器排序:使用集合构造方法接受Comparator的实现类对象。
区别:前者把比较方法和定义的实体类绑定在了一起;后者解耦合,有利于后期维护;

4.泛型的作用和分类
作用:1.将集合存储元素、对元素进行类型强转,异常提前到了编译期;
2.避免了强转的麻烦 。
分类:泛型类 class 类名 <E>
泛型方法 public <E> void method(E e)
泛型接口 public interface 接口名<E>
回复 使用道具 举报
1. 为什么要重写HashCode和equals方法?
HashCode的重写可以根据元素内容生成一串数字在比较equals方法之前比较这串数字将极大提高运行效率;当HashCode生成的字符串相同时用重写equals方法来比较集合中的元素内容这样就能判断元素是否重复。

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
Set集合添加某一对象或元素就要对它是否重复进行比较,这时候就要重写HashCode方法,如果不需要判断元素内容就不需要调用它。

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
TreeSet集合的排序有两种:
1>自然排序:定义类实现Comparable接口,重写compareTo方法,方法中根据需求定义排序规则
2>比较器排序:可以在创建集合时,在集合的参数列表中定义TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。
4.泛型的作用和分类
泛型的出现解决了再编写代码时,无法确定参数类型的问题,使用它可以使类中的成员变量和方法更加的通用,也可以将运行期间的问题,提前到编译期。
它分为三种:
1>包含泛型的类:
定义方法:public class 类名<E>
2>包含泛型的方法:
定义方法:修饰符 <类型> 返回值类型 方法名(类型 变量名) { }
3>包含泛型的接口:
定义方法:interface 接口名<类型> { }

回复 使用道具 举报
1. 为什么要重写HashCode和equals方法?
HashCode的重写可以根据元素内容生成一串数字在比较equals方法之前比较这串数字将极大提高运行效率;当HashCode生成的字符串相同时用重写equals方法来比较集合中的元素内容这样就能判断元素是否重复。

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
Set集合添加某一对象或元素就要对它是否重复进行比较,这时候就要重写HashCode方法,如果不需要判断元素内容就不需要调用它。

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
TreeSet集合的排序有两种:
1>自然排序:定义类实现Comparable接口,重写compareTo方法,方法中根据需求定义排序规则
2>比较器排序:可以在创建集合时,在集合的参数列表中定义TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。

4.泛型的作用和分类
泛型的出现解决了再编写代码时,无法确定参数类型的问题,使用它可以使类中的成员变量和方法更加的通用,也可以将运行期间的问题,提前到编译期。
它分为三种:
1>包含泛型的类:
定义方法:public class 类名<E>
2>包含泛型的方法:
定义方法:修饰符 <类型> 返回值类型 方法名(类型 变量名) { }
3>包含泛型的接口:
定义方法:interface 接口名<类型> { }

回复 使用道具 举报
1.为什么要重写HashCode和equals方法?
答:都是为了比较对象中的内容是否相同,不过equals方法的效率比较低,HashCode方法比较的是内容转换的哈希值,比较的效率比较高。

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
答:需要比较对象的内容是需要重写,比较地址值时不需要重写。

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
答:分为自然排序和比较器排序两种,自然排序时定义类实现Comparable接口,重写compareTo方法,方法中定义排序方式。比较器排序是在创建TreeSet集合的时候在参数列表中根据Comparator接口定义一个排序规则。

4.泛型的作用和分类
答:解决了在编写代码时,无法明确参数类型的问题,使类中的成员变量和方法更通用,将运行期的问题提前到编译期。
分为:包含泛型的类,包含泛型的方法和包含泛型的接口。
回复 使用道具 举报
1.为什么要重写HashCode和equals方法?
当需要在set集合中增加元素的时候,为了避免元素重复,需要对类的HashCode和equals方法进行改写。

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
当需要对元素进行比较的时候需要重写HashCode方法,否则不需要重写。

3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
自然排序:系统给定的默认排序规则进行排序
比较器排序:自定义排序规则进行排序

两种定义方式
以匿名内部类方法直接创建接口Comparator的实现类对象,重写compare方法
创建一个接口Comparable的实现类对象,重写compareTo方法

4.泛型的作用和分类
将集合存储元素,对元素进行类型强转,异常提前到了编译期,避免了强转的麻烦
泛型分为三种:
1、包含泛型的类
2、包含泛型的方法
3、包含泛型的接口
回复 使用道具 举报
1.为什么要重写HashCode和equals方法?
为了正确并高效地比较2个对象的属性值是否相同

2.什么时候类中需要重写HashCode方法,什么时候不需要重写?
需要比较属性值的类中要重写hashCode方法和equals方法,不需要比较则不用写。


3.TreeSet集合的排序规则,有几种定义方式,两种有什么区别?
2种定义方式
自然排序规则:在TreeSet元素的类中重写compareTo方法
比较器排序规则:创建TreeSet对象时在构造方法的参数中传入Comparator对象,重写CompareTo方法

4.泛型的作用和分类
1,可以把运行时的问题提前到编译期
2,避免了强制转换。
分为:泛型类,泛型方法,泛型接口
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马