第三堂课(集合框架:list优化,泛型,java的八大数据类型,装箱、拆箱,Vector和Arraylist的区别,堆栈)
一、List优化:
初始容量10,负载因子0.5(怎么去理解呢?)
解答:1.List list=new ArrayList();//实例化时 list的长度为0
2.首次扩容长度为10
3.当空间不足的时候以0.5进行扩展 10*(1+0.5)=15
4.当list长度浪费了资源怎么办?
(解决办法)固定集合长度空间:List list=new ArrayList(50);
二、泛型(概念):以类型作为参数的类就叫泛型
1.作用:提高程序健壮性,简化代码
2.泛型的默认值是object
3.语法:类名<参数1,参数2,参数3>
例如:Demo5<x,y,z>(相当于一个方法的语法)
调用:Demo5<String,Integer,Float>(注意数据类型只能用引用数据类型)
三、补充知识点(java的八大数据类型):
1.byte:字节
2.short:短整型
3.long:长整型
4.int:整型
5.char:字符型
6.float:单精度浮点型
7.double:双精度浮点型
8.boolean:布尔类型
四、装箱、拆箱(jdk1.5版本之后自动装箱及自动拆箱功能)
1.装箱:值类型–>引用类型
2.拆箱:引用类型-->值类型
例:
Integer sum=0;
Integer n=sum;//new integer(sum); 装箱
int s=n;// n.intValue();拆箱
五、Vector和Arraylist的区别
1.安全性:
(1)vector:线程安全
(2)arraylist:线程不安全
2.vector synchronized(同步):效率低 安全性高
例如:
同步:烧开水 等待开水烧开后再泡茶再看电视
3. ArrayList(异步):效率高 安全性低
例如:
异步:烧开水 边等待开水烧开边看电视 后泡茶
六、ArrayList和LinkedList的区别
1.ArrayList:连续空间存储数据 中间不允许有空格 合适使用在查询(遍历的时候)
2.linkedList:链表方式存储数据 链条 频繁操作 插入 ,删除的时候使用
七、什么是链条呢?(图片)
八、堆栈
1.概念:表示一个先进后出的数据结构,比如子弹夹(附图:堆栈描述)
2.压:push
3.弹:pop
案例:public class Demo7<k> {
private LinkedList<k> linkedList=new LinkedList<k>();
//压
public void push(k k) {
linkedList.addFirst(k);//增加第一个
}
//弹
public k pop() {
k k=linkedList.getFirst();//得到第一个
linkedList.removeFirst();//移出第一个
return k;
}
//取集合的长度
public int size() {
return linkedList.size();
}
public static void main(String[] args) {
Demo7<String> demo=new Demo7<String>();
//增加
demo.push("A");
demo.push("B");
demo.push("C");
demo.push("D");
//取出来
while(0!=demo.size()) {
System.out.println(demo.pop());
}
}
}
输出结果如图: