------- android培训、java培训、期待与您交流! ---------
集合框架分为两个支部:
1.以Collection为接口的元素集合类型
2.以Map为接口的映射集合类型
以Collection又分为Set和List
Collection
|--> List :元素是有序的,元素可以重复,因为该集合体系有索引
|-->ArrayList:底层使用的数组数据结构,特点:查询快 线程 不同步
|-->LinkedList:底层使用的链表数据结构,特点:增删快
|-->Vector:底层使用的数组数据结构。线程是同步的 被ArrayList替代。
ArrayList初始是10.超过时,延长50%。再复制
Vector初始是10.超过时,延长100%。再复制
|-->Set:元素是无序的(存入和取出的顺序不一定一致),元素不可以重复,该集合没有索引
|-->HashSet:底层数据结构式哈希表。
|-->TreeSet:底层数据结构式二叉树。
Set集合的功能和List是一致的
List之ArrayList
创建一个ArrayList
ArrayList<String> al = new ArrayList<>();//<>为1.5新特性,泛型。确定类型
增
add(index,element)
addAll(index,Collection);
al.add("java01");
在ArrayList中删除元素
删
remove(index);
al.remove(1);
在ArrayList中改元素
改
set(index,element);
al.set(1, "java07");
在ArrayList中查找元素
查
get(index);
//在指定位置查元素
al.get(1);
遍历ArrayList的两种方式
1.iterator()
ArrayList<String> al = new ArrayList<>();
//1.添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//在迭代过程中,准备添加或删除元素
Iterator<String> it = al.iterator();
//不能同时访问(对同一组元素不能进行多种操作)
while(it.hasNext()){
Object object = it.next();
if(object.equals("java02")){
//al.remove("java008");
//移除java02的引用在集合中删除
it.remove();
}
}
2.foreach
ArrayList<String> al = new ArrayList<>();
//1.添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
for (String string : al) {
System.out.println(string);
}
List之LinkedList
访问链表的某个元素时,必须从第一个元素一个个遍历下去,所以并不是特别高效
LinkedList和ArrayList类似,但是有它的特有的方法
LinkedList特有方法:
addFirst()
addlast()
getFirst()
getlast()
removeFirst()
removelast()
可以取得元素,并删除。removeFirst()若没元素,抛出异常
List之Vector
Vector和ArrayList类似,底层都是数组数据结构,但它是同步的。
Vector的遍历元素:
//枚举是Vector的特有方式,被迭代器取代了
Enumeration<String> en=v.elements();
while (en.hasMoreElements()) {
sop(en.nextElement());