一.List去重
String类型去重
选择排序思想:
新建集合思想:
集合的contains方法底层源码:
public boolean contains(Object o) { //Object o = new String("xx") ;//多态
return indexOf(o) >= 0;
}
indexOf()----->依赖于Object的equals()方法
而String类型 人家已经重写了Obejct的equals()方法
比较的字符串内容是否相同
自定义类去重:
去重测试类
Student类
List存储自定义类型,
而使用新建集合思想去重,contains()底层依赖于Obejct的equals
而Object的equals方法默认比较 是== ,两个对象地址值是否一样
存储自定义类型保证元素唯一,自定义类型重写equals方法()/hashCode(),成员信息是否一样,如果一样,还要比较成员的哈希码值是否一样
都相同,就是同一个人
二.Vector 和LinkedList的特有功能
Vector集合:线程安全的类(底层结构:数组,查询快,增删慢)
特有功能:
public void addElement(E obj)将指定的元素添加Vector集合中(默认追加)
public Enumeration<E> elements():获取枚举组件接口----->类似于Collection集合的Iterator iterator()
Enumeration接口
boolean hasMoreElements() 判断是否有更多的元素 ----->类似于Iterator里面的boolean hasNext()
E nextElement() :获取下一个元素 ----->类似于Iterator里面的E next()
public E elementAt(int index):通过索引值获取元素 ---->类似List集合的E get(int index)
int size():获取集合元素数
线程不安全,不同步,执行效率高
底层数据结构: 线程结构之链表,查询慢,增删快!
特有功能:
添加元素
public void addFirst(E e) 将指定的元素添加到链表的开头
public void addLast(E e) 将指定的元素添加到链表的末尾
public E getFirst():获取第一个元素
public E getLast():获取最后一个元素
public E removeFirst():删除第一个并返回第一个元素
public E removeLast():删除最后一个元素并返回
三.SET集合
Set集合:元素唯一的 默认情况使用HashSet进行实例(创建对象)
HashSet的底层依赖于HashMap(哈希表结构),元素唯一,迭代顺序无法保证的!
HashSet集合保证元素唯一---底层依赖HashMap的put方法---->依赖于hashCode()/equals(),
而现在存储String类型,重写了equals和hashCode(),保证元素唯一!