List接口的特点:
a.有下标
b.有序的(有序不是自然顺序,不是123,abc,有序指的是存和取的顺序一致)
c.可重复
实现类:ArrayList,LinkedList,Vector
ArrayList:底层采用数组结构,查询快,增删慢
LinkedList:底层采用链表结构,查询慢,增删快
Vector:底层采用数组结构,查询快,增删慢
List结构中具有的方法:
增: add(E e);add(int index,E e);
删: remove(Object obj);remove(int index);
改: set(int index,E e);
查: get(int index);
其他:
size(),clear(),contains(Object obj),toArray()
iterator();isEmpty()
实现类的方法:
1.ArrayList:方法基本和List中定义的一模一样
2.LinkedList:除了和List接口中一样的方法之外
LinkedList提供了大量首位操作的方法
第一组:
void addFirst(E e);
void addLast(E e);
第二组:
E removeFirst();//删除首个元素,返回被删除的元素
E removeLast();//删除尾部元素,返回被删除的元素
第三组:
E getFirst();
E getLast();
第四组:
E pop();//弹出,删除集合中的某一个元素,和 removeFirst功能是一样的
void push(E e);//推入,把一个元素添加到集合中, 和addFist功能是一样的
Set接口的特点:
a.无下标
b.无序的(无序指的是存和取的顺序不一定一致,LinkedHashSet和TreeSet除外)
c.不可重复
实现类:HashSet,LinkedHashSet,TreeSet
HashSet:底层采用哈希表结构,查询快,增删快,无序的
LinkedHashSet:底层采用 链表+哈希表,查询快,增删快,有序的
Set接口中的没有特有方法,其方法和父接口Collection基本一模一样
实现类:
HashSet和LinkedHashSet中的方法基本和Set接口一模一样
HashSet集合是如何保证元素唯一性的?
HashSet集合保证元素唯一性,依赖的是元素的hashCode方法和euqals方法。
当元素的哈希值不同时,元素都有自己的独立位置。不需要在判断元素的equals方法,
当元素的哈希值相同时,这时元素在哈希表中位置相同,这时就需要在判断一次元素的内容是否相同。
就需要调用元素的equals方法进行一次比较。如果equals返回是true。那么视为两个元素为重复元素。
只储存一个。
如果返回是false,那么这两个元素不是重复元素,会存储在同一个哈希值上。
为了建立自定义对象判断元素是否重复的依据。
需要覆盖hashCode方法,和equals方法。
而且最好依据对象的特有条件来建立hashcode和euqals的实现。