关于Collection的集合框架

一、List

        1、UML:统一建模语言
        2、Colletion接口是List和Set的父接口,不是Map接口的父接口
        3、.List特点:有序、对象可以重复
        3、1 有序:元素添加的顺序与输出的顺序一致
        3、2 对象可以重复(不唯一);

        4、List删除

·        

List lst=new ArrayList<>();
		lst.add("zs");
		lst.add("ls");
		lst.add("ww");
		lst.forEach(System.out::println);
		
		//4.遍历方式(3种)
		//4.1 for(下标)
		System.out.println("=======for(下标)===========");
		for (int i = 0; i < lst.size(); i++) {
			System.out.println(lst.get(i));
		}
		
		//4.2 foreach
		System.out.println("=======foreach============");
		for (Object o : lst) {
			System.out.println(o);
		}
		
		//4.3 迭代器iterator
		System.out.println("======迭代器iterator=================");
		//快捷键:ctrl+1 
		//获取迭代器
		Iterator it = lst.iterator();
		//循环遍历
		while(it.hasNext()) {
			//next():获取元素并移动下标
			//hasNext():判断集合中的下一个元素是否存在,不取出元素,也不移动下标
			System.out.println(it.next());	
		}
		
		//5.删除(3种)
		System.out.println("=======删除==============");
		System.out.println("删除之前的集合大小:"+lst.size());
		//5.1 for(正向删除)
		//第一次 i=0 lst.size()=4;
		//第一次 i=1 lst.size()=3;
		//第一次 i=2 lst.size()=2;
		/*int len=lst.size();
		for (int i = 0; i < len; i++) {
			lst.remove(0);
		}*/
		
		//5.2 for(逆向删除)
		/*lst.size();
		for (int i = lst.size()-1; i>=0; i--) {
			lst.remove(i);
		}*/
		
		//5.3 迭代器(推荐)
		/*Iterator it1 = lst.iterator();
		while(it1.hasNext()) {
			//先移动,再删除
			it1.next();
			it1.remove();
		}*/
		
		//清空
		lst.clear();
		
		System.out.println("删除之后的集合大小:"+lst.size());

二、List优化

核心概念:
    1) 负载因子(扩容比例)=1.5
    2) 初始化容量=10
    3) 向下取整 floor ceil
    公式:容器大小*1.5

public static void main(String[] args) {
		List lst=new ArrayList<>(50);
		for (int i = 0; i <50; i++) {
			lst.add(i);
			System.out.println(i);
			genLen(lst);
		}
	}
	
	public static void genLen(List lst){
		try {
		Field field	=lst.getClass().getDeclaredField("elementData");
				field.setAccessible(true);
				Object[] obj=(Object[]) field.get(lst);
				System.out.println("当前集合的大小:"+obj.length);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

三、 泛型:以类型作为参数的类叫做泛型

特点:
        1)提高程序健壮性
        2)简化代码
        3)泛型的默认类型Object

泛型的默认值是Object

        

List<Integer> lst=new ArrayList<>();
		lst.add(6);
		lst.add(7);
		lst.add(2);
		lst.add(5);
		
		Iterator it=lst.iterator();
		while(it.hasNext()) {
			Object val=it.next();
			int num=Integer.parseInt(val.toString());
			if(num%2==0) {
				System.out.println(num);
			}
		}

四. 装箱、拆箱
   值类型->引用类型 装箱
   引用类型->值类型 拆箱
   jdk1.5之后引入了自动装箱及自动拆箱功能

八大基础类型:int/short/long/byte/float/double/boolean/char(值类型)

int a=10;
		Integer a1=new Integer(a);
		System.out.println(a1);
		//拆箱:引用类型-->值类型
		int b=a1.intValue();
		System.out.println(b);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值