集合(java.util.*):里面可以存放任意个对象的容器,该容器可以对里面的元素进行操作。
Collection:它是集合的根部接口。
该接口下的子接口为:
List:
ArrayList
LinkedList
Vector
Set:
HashSet
TreeSet
LinkedHashSet
Collection下常见的方法是:
add(Object o) //添加元素
remove(Object o) //移除元素
clear() //清空元素
size() //获取容器的长度
constains(Object o) //判断容器中是否包含o元素
遍历Collection集合中元素可以使用增强循环(foreach) 和迭代器Iterator
for(每个元素的类型 变量 : 集合名或者数组名){
}
Iterator iterator():返回迭代器接口
Iterator接口下有两个方法:
boolean hasNext():判读是否还有可迭代的元素
Object next():获取迭代的元素
List:属于Collection接口的子接口
特点: 有序的,而且可以存放重复元素。
add(int index, E element) :
remove(int index); 根据下标删除元素。
set(index,element);替换指定位置上的元素。
get(index): 获取指定位置上的元素。
List<E> subList(int fromIndex,int toIndex):截取list集合。
遍历集合List: 三种
1.根据下标
2.foreach
3.迭代器 iterator
Set:属于Collection接口的子接口
特点:无序的,元素不可以重复。
它的方法和父类一样.
ArrayList:
LinkedList:
Vector:
//80% 使用的是ArrayList
ArrayList , LinkedList和Vector的区别
他们都是List接口的实现类,但是ArrayList底层结构为数组结构,便于查找元素,不便于增加和删除元素。线程不安全,效率高。
LinkedList它的底层结构是一个链表结构,便于增加和删除,不便于查询。
Vector:底层结构也是数组结构,便于查找元素,不便于增加和删除元素。 线程安全,效率慢。
1.你有没有看过HashSet的源码?看过。如何进行元素的比较。
HashSet: 底层结构为哈希表,以哈希表先进行比较,如果哈希表相同,再判读equals方法是否相同。如果两者都相同视为同一元素。元素允许为null
2.TreeSet: 1.TreeSet中添加的元素类型要一致。 2.添加的元素必须具备可比性。
可比性:1.自然排序。该定义类可改。Comparable
2.定制排序。该类无法修改时,使用。Comparator
Collections: 集合的工具类。该类中所有的方法都是static方法。 可以操作集合。
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) :
使用二叉搜索算法搜索指定对象的指定列表。
static void reverse(List<?> list)
反转指定列表中元素的顺序。
sort(List<T> list) :为list排序 前提T类型必须具备排序功能
sort(List<T> list,Comparator com) :
Map:接口。键值对集合。Map没有实现Collection接口
HashMap:
put(k,v);
size();
remove(k);
get(k);
keySet():获取map中所有的键。 返回Set集合类型。
遍历Map. 获取map中所有的键。 遍历所有的键。
HashTable和HashMap区别:
0.都是Map接口的实现类。
1.HashMap允许键值为null。HashTable不允许键值为null;
2.HashMap线程不安全,但是效率高,HashTable线程安全,但是效率低。