黑马程序员技术交流社区
标题:
集合总结2
[打印本页]
作者:
122125241
时间:
2015-7-11 01:42
标题:
集合总结2
collection 总集合
1:List 是一个有序的集合.可重复
1.1:arrayList 没有特殊方法,底层是一个数组 查询快 增删慢,线程不安全,效率高
1.2:vector有特殊的增加和遍历方法,并且集合在遍历的时候采用的是索引迭代的特殊方法,底层是一个数组,查询快 增删慢,线程安全, 但是效率低 不经常用
a:添加
public void addElement(E obj) -- 后期被add()替代
b:获取
public E elementAt(int index) -- 后期被get()替代
c:遍历
public Enumeration elements() -- 后期被iterator()替代
1.3:LinkedList底层是一个链表,查询慢 增删快 线程不安全,效率低
LinkedList 对顺序访问进行优化,向List 中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列.
2:Set无序 唯一.------加入Set 的Object必须定义equals()方法
使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().
2.1:HashSet保证唯一的方法:
为快速查找而设计的Set ,存入HashSet对象必须定义hashCode().
String类型的可以直接判断,通过首字母的哈希值自动排列
如果是引用数据类型.可以重写对象比较的Equals方法和HashCode方法
2.1.1:LinkedHashSet 底层数据结构是一个哈希表和链表,由链表保证顺序,由哈希表保证数据的不可重复性
打印是按照添加的顺序来打印,没有了
2.2treeSet底层数据结构是一个红黑树
如何保证集合顺序 由自然排序
就是引用数据类型的类中自己写有比较的算法(Comparator接口的重写:先继承接口,然后重写接口中的方法)
set在添加的时候会判断是否相同 相同就不添加,不同就添加
集合自己排序
这个是采用集合自己判断,方法是:采用匿名内部类的方法重写接口Comparator的方法,然后在创建集合对象时放入集合中
如何保证唯一性:
看返回值的大小,如果返回值大于0就是从大到小
如果小于0 也是从大到小,
如果等于0 ,两个集合元素相同,不添加
重写Comparator的方法
先看treeSet的comparator的方法public Comparator comparator()
返回值类型是一个Comparator的接口类型,因为直接返回的就是一个0,所以需要重写接口方法,点击进入接口查看abstract的方法只有两个
我们需要重写compare的方法即可
public int compare(T o1,T o2){
int result = o1.getAge() - o2.getAge();
if (result == 0) {
result = o1.getNameString().compareTo(o2.getNameString());
}
return result;
}
判断结果即可
集合自己排序:
new comparator<>(){
public int compare(T o1,T o2){
int result = o1.getAge() - o2.getAge();
if (result == 0) {
result = o1.getNameString().compareTo(o2.getNameString());
}
return result;
}//重写接口的方法
};
3:针对Collection集合我们到底使用谁呢?(掌握)
唯一吗?
是:Set
排序吗?
是:TreeSet
否:HashSet
如果你知道是Set,但是不知道是哪个Set,就用HashSet。
否:List
要安全吗?
是:Vector
否:ArrayList或者LinkedList
查询多:ArrayList
增删多:LinkedList
如果你知道是List,但是不知道是哪个List,就用ArrayList。
如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。
如果你知道用集合,就用ArrayList。
复制代码
作者:
0618张军
时间:
2015-7-11 07:47
正是我所需要的,我们正好学到这
作者:
禾叶青青
时间:
2015-7-11 08:05
很好,总结的很到位
作者:
野驴少东
时间:
2015-7-11 11:01
:victory::victory:同勉
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2