黑马程序员—Java容器笔记


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

容器与数组是可以互相转换的。

容器里面存储的必须是对象,当存储基本数据类型时,其会被自动封装成相应的对象。

1.在容器里面存储自定义对象

   HashSet

    Set集合中的对象是不重复,他是依据对象的hashCode()和调用对象的equals方法实现的,而这两个方法在Object类中都已经定义,若果在自定义的类中不重写此方法,那么当容器添加元素时,调用的就是Object中的方法,而他们是比较对象创建时在堆中的地址,所以每一个对象的hashCode()都是不一样的,调用equals方法返回的结果也是不一样的。

所以,在自定义的类中,这两种方法必须被重写,且是重写Object类中的,在equals方法中不可以使用泛型,形参必须是Object类。hashSet中有哈希表,当对象进容器的时候,根据对象的哈希值查表,若果没有重复的,则添加,如果有重复的,则调用对象的equals方法比较,如果还是相等,则丢弃,若不相同,则添加。所以,对象的哈希值相同,对象不一定相同,对象的哈希值不同,那么对象一定不同。

 TreeSet

  当我们使用该容器时,则不必纠结对象的哈希值。

TreeSet在添加对象时,只会调用compareTo方法(equals会被忽略,不能以equals来比较对象是否相同),因为对象必须具备比较性才能被添加

  他对添加的对象进行比较排序,有两种实现方式。

    

  1.使对象具有比较性,即继承Comparable接口,实现其compareTo方法

   

  2.在初始化该集合的时候,传入一个比较器(注意:比较器的优先级高)

    

Map

 取出map集合中的两种方式

 1.通过keySet

 

2.通过Map.Entry<k,v>

 

有什么错误,还请大侠们指出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值