集合框架
1.Collection接口(面试题)
1.1集合框架的顶级接口
1.2 是Set 和 List 的父接口
1.2 但不是Map的父接口
集合中只能添加引用数据
2.List接口
2.1特点:有序,但不唯一
//创建集合
List<Object> list = new ArrayList<>();
//添加数据
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
System.out.println("-----------list有序-----------");
for (Object item : list) {
System.out.println(item);
}
//运行结果
-----------list有序-----------
aa
bb
cc
dd
System.out.println("-------------list不唯一-------------");
list.add("aa");
for (Object item : list) {
System.out.println(item);
}
//运行结果
-------------list不唯一-------------
aa
bb
cc
dd
aa
2.2遍历方式
System.out.println("---------------for(下标)-----------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//运行结果
---------------for(下标)-----------------
aa
bb
cc
dd
aa
System.out.println("--------------foreach---------------");
for (Object item : list) {
System.out.println(item);
}
//运行结果
--------------foreach---------------
aa
bb
cc
dd
aa
System.out.println("----------------迭代器(Iterator)---------------");
//创建迭代器
==使用迭代器遍历时hasNext()后必须要有next()==
Iterator itr = list.iterator();
while(itr.hasNext()) { //hasNaxt()是为了接收下一个数据
System.out.println(itr.next()); //next();是为了获取下一个数据
}
//运行结果
----------------迭代器(Iterator)---------------
aa
bb
cc
dd
aa
2.2.1 List集合删除
System.out.println("--------------删除---------------");
System.out.println("删除之前:"+list.size());
//for(下标)
for (int i = 0; i <list.size(); i++) {
list.remove(i);
}
System.out.println("删除之后:"+list.size());
//运行结果
--------------删除---------------
删除之前:5
删除之后:2
====删不干净所有用下面这种方法====
//逆向删除
for (int i = list.size()-1; i>=0; i--) {
list.remove(i);
}
//运行结果
--------------删除---------------
删除之前:5
删除之后:0
//Iterator删除
Iterator it = list.iterator();
while(it.hasNext()) {
it.next();
it.remove();
}
//运行结果
--------------删除---------------
删除之前:5
删除之后:0
2.3 List优化
初始容量为10,负载因子0.5
例如:10+100.5=15 16 --> 15+100.5=20
3.泛型
System.out.println("----------泛型-----------");
List<Integer> lt = new ArrayList<Integer>(3);//初始容量(10)
//添加数据
lt.add(3);
lt.add(2);
lt.add(1);
Iterator<Integer> itt = lt.iterator();
//使用泛型之前
while(itt.hasNext()) {
Object ob = itt.next();
Integer in = Integer.parseInt(ob.toString());
if(in%2==0)
System.out.println(in);
}
//所有泛型后
while(itt.hasNext()) {
Integer in = itt.next();
if(in%2==0)
System.out.println(in);
}
//运行结果
----------泛型-----------
2
4.装箱,拆箱
3.1 装箱:值类型—>引用类型
int i = 5;
Integer l = new Integer(i);
3.2 拆箱:引用类型—>值类型
Integer k = new Integer(4);
int m = k.intValue();
5. ArrayList, LinkedList,Vector区别
ArrayList:以连接的数组结构储存数据,查询快,增删改慢
LinkedList: 以链表的结构储存数据,查询慢,增删改快
Vector: 增删改查都慢,已过时