List、Set
List:特有的常见方法。
有一个共性特点就是都可以操作角标。
1、添加
void add(index,element);
void addAll(index,collection);
2、删除
Object remove(index);
3、修改
Object set(index,element);
4、获取:
Object get(index);
int indexOf(object);
int lastIndexOf(object);
List subList(from,to);
Vector、ArrayList、LinkedList
list下面又分3个子类
Vector:内部是数组数据结构,是同步的。增删,查询都很慢。
ArrayList:内部是数组数据结构,是不同步的,替代了Vector。替代了Vector,查询的速度快。
LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快
LinkedList
getFirst();//获取但不移除,如果链表为空,抛出NoSuchElementException。
getLast();
peekFirst();//获取但不移除,如果链表为空,返回null。
peekLast();
removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException。
removeLast();
pollFirst();//获取并移除,如果链表为空,返回null;
pollLast();
Hashset,Treeset
HashSet:内部数据结构是哈希表,是不同步的。
TreeSet:可以对Set集合中的元素进行排序,是不同步的。
哈希表确定元素是否相同
1. 判断的是两个元素的哈希值是否相同。如果相同,再判断两个对象的内容是否相同。
2. 判断哈希值相同,其实判断的是对象的HashCode方法。判断内容相同,用的是equals方法
TreeSet:
TreeSet对元素进行排序的方式一: 让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。
如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?
可以使用TreeSet集合第二种排序方式:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
将该类对象作为参数传递给TreeSet集合的构造函数。 |