一、集合是什么?
它和数组不同,数组既可以存储基本数据类型,也可以存储引用数据类型。而集合只能存储引用数据类型,比如你存入一个int型数据18放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型,如果存储基本数据类型,会被自动装箱。
它就像一个容器,专门用来存储
java对象
(实际上是对象名,即指向地址的指针),这些对象可以是任意数据类型,并且长度可变。其中,这些集合类都位于java.util包中,在使用时一定要注意导包的问题,否则会出现异常。
关系图如下,该图用到了UML(统一建模语言):
继承关系:子类继承父类的行为或特征;
依赖关系:是接口里面有某个方法需要用到某个类或者接口对象;
二、Collection接口
1.集合框架的顶级接口(所有接口都是从 Collection 接口继承过来的);
2.是 Set 和 List 的父接口;
3.但不是 Map 的父接口。
三、list接口
List接口的特点:有序,可重复。
注:继承 List 接口的类都具有以上两点特点。
package com.zking.dog;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test03 {
public static void main(String[] args) {
List list =new ArrayList();
//List集合的特点:1有序
list.add("木");
list.add("1");
list.add("林");
list.add("2");
for (Object object : list) {
System.out.println(object);
}
//List集合的特点2.元素可以重复
list.add("2");
System.out.println("-----------------");
for (Object object : list) {
System.out.println(object);
}
list.add(1);
//java八大基本数据类型 int float byte double short char boolean long
test t = new test();
}
}
可通过三种方式比遍历List集合的值:
1. foreach 循环
2. for 循环
3. Iterator(迭代器):一种对象,能够用来遍历目标中的部分或者全部元素。
四、List的优化:
List集合的初始是没有长度的,但是只要往集合中插入数据,长度就会变成10,但是避免不了很大的数据,官方就想到了一个方法,如果存储的长度在10以上就增加原来容量的1.5倍,如此一来就既不会有过大的无用空间,也提升了运行代码的速度。
五、泛型
JDK1.5之后以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
六、 装箱(从小到大)、拆箱(从大到小)(案例:快递)
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能
七、 ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时,同步.线程安全