1、Collection顶层接口
Collection接口是集合框架的顶层接口是list和set的父接口,不是Map集合的父接口,以下是关系图如示:

2、有序、无序
有序:元素添加的顺序和元素输出的顺序一致
无序:允许添加重复元素
案例:
        List list = new ArrayList();
            list.add("ewq");
            list.add("wq");
            list.add("q");
            list.add("dsa");
            list.forEach(System.out::println);
输出结果:

3、遍历方式for&foreach&iterator
for:根据下标获取元素
List list = new ArrayList();
            list.add("ewq");
            list.add("wq");
            list.add("q");
            list.add("dsa");
        int size = list.size();
        for (int i=0;i <size;i++){
            System.out.println(list.get(i));
        }
foreach:循环输出集合中所有元素
        for (Object i : list) {
            System.out.println(i);
            }
iterator:获取迭代器循环输出集合中所有元素
 Iterator ite = list.iterator();
        while (ite.hasNext()){
            Object var=ite.next();
            System.out.println(var);
        }
4、迭代器的原理
两个重要的方法:
1) hashNext():用于判断迭代器中的下一个元素是否存在,不移动下标
2) naxt():移动下标并读取当前数据
//        while(it.hasNext()){
//            System.out.println(it.next());
//        }
5、删除方法
1) for正面删除
int size = list.size();
        //1) for正向删除
//        System.out.println("数据大小为:"+list.size());
//        for (int i = 0;i<size; i++){
//                list.remove(0);
//            }
//        System.out.println("数据大小为:"+list.size());
2) for负面删除
//        System.out.println("数据大小为:"+list.size());
//        for (int i = size-1;i>=0;i--){
//                list.remove(i);
//            }
//         System.out.println("数据大小为:"+list.size());
3)迭代器(推荐)
    while (it.hasNext()){
            it.next();
            it.remove();
        }
6、集合优化
避免造成资源空间浪费,对于一些大型项目而言就尤为重要
案例:
package com.zking.test;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class text02 {
    public static void main(String[] args) {
        //1.list集合优化
        //核心概念:
        //1、负载因子:1.5
        //2、初始容量:10
        //3、扩容计算公式:容器大小*负载因子
        List lst =new ArrayList<>(50);
        for(int i = 0;i<50;i++){
            lst.add(i);
            System.out.println(i);
            getLen(lst);
        }
    }
    public static void getLen(List lst){
        try{
            //获取类对象
            Class cls = lst.getClass();
            //获取类对象中的属性
            Field field = cls.getDeclaredField("elementData");
            //设置权限
            field.setAccessible(true);
            //获取属性的值
            Object[] arr = (Object[]) field.get(lst);
            System.out.println("list集合的大小:"+arr.length);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
7、范型
从 Java 1.5 开始提供了泛型。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。
注意:
> JDK1.5以上才有。
> 1)以类型为参数的类叫做泛型
> 2)泛型的默认类型为Object
> 3)作用:提高程序的健壮性、简化代码
案例:
package com.zking.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test3 {
    public static void main(String[] args) {
        //范型
        List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
         //获取迭代器
        Iterator ite = list.iterator();
        while (ite.hasNext()){
            ite.next();
            ite.remove();
        }
    }
}
8、装拆箱
示例:送快递,寄快递时需要对物品进行包裹,收快递后就需要对包裹进行拆包。
> 装箱:值类型到引用类型
> 拆箱:引用类型到值类型
9、ArrayList、LinkedList和Vector的区别
ArrayList和LinkedList的区别
- **相同点**
1、LinkedeList和ArrayList都实现了List接口。
2、ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。
- **不同点**
1、ArrayList底层实现是数组,而LinkedList是双向链表。
2、ArrayList查询快(下标)、增删改慢、LinkedList是查询慢,但是在插入删除时效率比较高。
ArrayList和Vector的区别
- **相同点**
1、ArrayList和Vector都是用数组实现的
2、默认初始化大小都是10
- **不同点**
1、Vector多线程是安全的,而ArrayList不是。Vector类中的方法很多有synchronized进行修饰,这样就导致了Vector在效率上无法与ArrayList相比;
2、两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同的。(ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍,Vector会扩充为原来空间的2倍)。
 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
                     
              
             
                   1万+
					1万+
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
					 
					 
					


 
            