(Linkedlist和Set集合)
- 1.arraylist 和linkedlist的特点:
- 2.Linkedlist中:特有方法:操作首尾元素
- 3.iterater可以迭代Vector
- 4.sort,是按照编码表的顺序进行排序,
- 5.匿名内部类:
- 6.Arratlist比较器排序:
- 7.a和ac的升序排序
- 8.对引用类型进行排序,需要告知comparator规则。
- 9.可变参数方法和其他方法重载时,优先进入重载方法。
- 10.LinkedList集合也可以作为堆栈,队列的结构使用
- 11.LinkedList源码分析???
- 12.为什么地址值要写成16进制hashCode。
- 13.==是比较的真实地址,不是比较的哈希地址。
- 14.字符串类和包装类,都重写了hashCode方法。
- 15.nactive,是操作系统的方法或者是其他语言写的方法。
- 16.因为红黑树需要进行左旋,右旋操作, 而[单链表]不需要,
- 17.HashSet数组的存储单元里,存储节点对象,对象里面存着哈希值和对象的地址
- 18.重写的hashCode方法,扩大31倍哈希碰撞最少,提高equals效率。
- 19.想保证自定义类的元素唯一,要重写hashcode和equals方法。
- 20.linkedHashSet用不到。
- 21.相同变量名,同时修改快捷键:shift+f6
- 22.treeSet 底层是红黑树,默认升序排序,是大小有序集合。
- 23.为什么优先比较hashcode,再比较equals
1.arraylist 和linkedlist的特点:
Arraylist:底层数组,查询快,增删慢
Linkedlist:底层双向链表,增删快,查询慢
2.Linkedlist中:特有方法:操作首尾元素
push 和addFirst一样,都没有返回值
3.iterater可以迭代Vector
(Vector是JDK1.0时期存在的单列集合 )
4.sort,是按照编码表的顺序进行排序,
ASCII表’0’48,'A’65,'a’97
先比较第一位,再排第二位。
5.匿名内部类:
没有名字的,类中类。
6.Arratlist比较器排序:
o1-o2升序,o2-o1降序
用字符串首字母string.charAt(0)进行排序,首字母一样是会自动比较第二个字母吗
7.a和ac的升序排序
先a后ac
8.对引用类型进行排序,需要告知comparator规则。
9.可变参数方法和其他方法重载时,优先进入重载方法。
可变参数可以接收任意个同类型的参数,底层是一个数组,你传几个,就创建空间为几个的数组
1)一个方法只能有一个可变参数
2)如果方法中有多个参数,可变参数要放到最后。
3)可变参数底层就是一个数组,所以可以传递可变参数的地方,都可以传递数组----int…arr和int[] arr一样;
10.LinkedList集合也可以作为堆栈,队列的结构使用
pop和push
11.LinkedList源码分析???
12.为什么地址值要写成16进制hashCode。
规定,咱也不知道.
13.==是比较的真实地址,不是比较的哈希地址。
14.字符串类和包装类,都重写了hashCode方法。
为什么重写hashCode?
之所以要重写hashCode方法,就是加快–equals判断的速度。
首先比较hash值,hash不同,对象一定不同,hash值相同,比较对象内容
15.nactive,是操作系统的方法或者是其他语言写的方法。
16.因为红黑树需要进行左旋,右旋操作, 而[单链表]不需要,
以下都是单链表与红黑树结构对比。
如果元素小于8个,查询成本高,新增成本低
如果元素大于8个,查询成本低,新增成本高
17.HashSet数组的存储单元里,存储节点对象,对象里面存着哈希值和对象的地址
数组的存储单元里:存储着哈希值和节点的地址吗
18.重写的hashCode方法,扩大31倍哈希碰撞最少,提高equals效率。
19.想保证自定义类的元素唯一,要重写hashcode和equals方法。
20.linkedHashSet用不到。
21.相同变量名,同时修改快捷键:shift+f6
22.treeSet 底层是红黑树,默认升序排序,是大小有序集合。
23.为什么优先比较hashcode,再比较equals
hash算法是二进制算法,计算式本质是二进制,所以hash算法速度很快。如若hashCode不同则可直接存储不用equlas比较。所以先计算hashCode大大加快了存储速率。