黑马程序员之java学习笔记8

1.集合中只能放置对象引用,无法放置原生数据类型,如若要放置原生数据,必须的包装成对象。集合中的对象都是object类型的,取出来应该转化为真正的类型。

2.LinkedList:底层通过链表实现的。LinkedList类中的节点对象包含数据和引用(c中的指针)两个属性,以便实现对链表的操作。LinkedList类中的方法和ArrayList类中的方法相似。

3.链表分为单向链表,循环链表,双向链表,双向循环链表。

4.ArrayListLinkedList的比较:

  1ArrayList底层用数组实现的,LinkedList底层是通过链表实现的。

  2ArrayList在查找数据时,效率比LinkedList高。

  3LinkedList在插入和删除数据时,效率比ArrayList高。

5.(Stack):FILO先进后出,最底的元素为栈底(bottom),最上面的元素称为栈顶(top)。其方法有压栈push();出栈pop();查看peek();实现栈既可以用线性表(ArrayList),也可以用链表(LinkedList)来实现。

6.队列(Queue)FIFO先进先出。第一个元素称为队首(front),最后一个元素称为队尾(rear)

也可以通过线性表(ArrayList)和用链表(LinkedList)来实现。

 

7.ArrayList的构造方法:ArrayList有三个构造方法,ArrayList();ArrayList(int i); ArrayList(Collection c);调用第一个无参的构造方法,底层实现是通过调用ArrayListint i)来实现的。如果采用第二中构造方法,由参数i来指定ArrayList的初始长度,而不是默认的长度10个。ArrayList(Collection c)通过集合C中的元素以其迭代的顺序来创建ArrayList.

8.ArrayListLinkedList添加对象比较:

  当向ArrayList中添加对象,在底层将该对象直接存储到数组中;当向LinkedList中添加对象,底层会生成Entry对象,其结构如下:

  Entry{

        Entry previous;

        Object data;

        Entry next;

 }

最终将Entry加入链表中。

LinkedList类中维护的是一个个Entry对象。

 

 

9.Set:是一个接口,继承了Collection接口,set中的元素不能重复且是无序的。

 

10.当重写Object类的equals(Object o)方法时,一般情况下也应该重写hashCode()方法,以保持相等的对象有一样的哈希地址。反之,重写了hashCode()方法,也应该重写equals方法。Equals方法和hashCode方法总是相辅相成一起使用,它们使用的场景是判读Set集合能否加入新的元素。

11.String类的hashCode()方法重写了Object类的hashCode()方法,当两个字符串内容相同,根据底层实现,它们的hashCode()的值就相等。本质上,String类的hashCode()方法比较的是字符串内容。

12.Objectequals方法特性:

 1)自反性: x.equlas(x)返回truex非空

 2)对称性: x.equlas(y)返回truey.equlas(x)返回true. Xy非空

 3)传递性:x.equlas(y)返回true, 并且y.equlas(z)返回true,那么x.equlas(z)返回true.xyz非空

 4)一致性:x.equlas(y)返回true,多次调用还是放回true,前提对多次调用中对,xy的信息没做任何修改。xy非空

 5) x.equlas(null)返回falsex非空

13.ObjecthashCode()特点:

1)java的一个应用执行过程中,对象多次调用hashCode()的返回值是一样的。前提是多次调用该对象的信息没有被改变。

2)对于两个对象的equals方法返回true,那么这两个对象的hashCode()值一定是相同。

3)当两个对象调用equals方法返回false,这两个对象的hashCode()的值不一定强制要求不一样。(可以相同也可以不同)不同可以提高应用的性能。

4)对于Object类来说,不同的对象的hashCode()值不同,hashCode()的值表示对象的地址。

 

1.       当要添加一对象进入HashSet时,hashCode()方法就会调用,判定已存在的对象的hashCode()的值是否和该对象的hashCode()值相等,如果不等,就直接加进HashSet;

如果不等,再调用equals方法和已存在的对象进行比较,如果返回true就加不进去,返回false就加进HashSet中。

 

2.       字符串的hashCode()方法和equals()方法都是根据字符串内容来比较的,两个字符串的内容一致,hashCode()方法返回值就一样,equals()就返回true

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值