J2EE02(集合框架)

1.参考思维导图

1. Collection接口

  1.1 集合框架的顶级接口
  1.2 是Set和List的父接口
  1.3 但不是Map的父接口
  1.4集合中只能添加引用类型数据

2. List接口

2.1 特点:有序、对象可以重复

2.1.2:参考代码

public static void main(String[] args) {
		//List集合特点:1有序
		List ls = new ArrayList();
		
		ls.add("a");
		ls.add("b");
		ls.add("c");
		ls.add("d");
		
		for (Object object : ls) {
			System.out.println(object);
		}
		
		//List集合的特点2.元素可以重复
		ls.add("a");
		System.out.println("---------");
		for (Object object : ls) {
			System.out.println(object);
		}
		
		ls.add(1);
		
		//八大基本数据类型 int float byte double short char boolean long
		
	}

 

 2.2 遍历方式 
    2.2.1 for循环遍历下标

//List集合的遍历方式 1.下标遍历 for循环
		for (int i = 0; i < ls.size(); i++) {
			System.out.println(ls.get(i));
		}


    2.2.2 foreach遍历

        

//List 集合遍历方式2.foreach jdk1.5之后才有的
		for (Object object : ls) {
			System.out.println(object);
		}


    2.2.3 迭代器Iterator(原理) 
          hasNext()
          next()

	System.out.println("------迭代器-----");
		//List集合的遍历方式3.迭代器
		Iterator it =  ls.iterator();
//		it.hasNext(); //返回值为布尔类型
//		it.next();	//获取下一个元素,并且移动迭代器位置
		while(it.hasNext()) {
			Object next = it.next();
			System.out.println(next);
		}
		

 

2.3 List优化
      初始容量10,负载因子0.5

指定初始容量

public static void main(String[] args) throws Exception{
		List ls = new ArrayList();
		//List 实现类 ArrayList实际上就是一个Object数组
		print(ls);
		for (int i = 1; i <=34; i++) {
			ls.add(i);
			print(ls);
		}
	}
	
	//静态方法	实例方法 静态方法不属于类  实例方法属于对象
	public static void print(List list) throws Exception{
		//反射
		//1.获取类对象
		Class clazz = list.getClass();
		
		//2.获取对象属性
		Field field = clazz.getDeclaredField("elementData");
		
		//3.打开属性限制
		field.setAccessible(true);
		
		Object[] object = (Object[])field.get(list);
		System.out.println("数组长度为:"+object.length);
		
	}

2.4 List元素删除
      iterator

public static void main(String[] args) {
		List ls = new ArrayList();
		
		ls.add("a");
		ls.add("b");
		ls.add("c");
		ls.add("d");
		
		System.out.println(ls.size());
		//List集合的删除 顺序删除 有问题 不能全部删除
		/*for (int i = 0; i <ls.size(); i++) {
			ls.remove(i);
		}*/
			
		//List 集合的删除 倒序删除
		/*for (int i = ls.size()-1; i >=0; i--) {
			ls.remove(i);
		}*/
		
		//List 集合的删除 迭代器
		Iterator it =  ls.iterator();
		while(it.hasNext()) {
			Object next = it.next();
			it.remove();
		}
		System.out.println(ls.size());
		
	}

3. 泛型

JDK1.5之后
   以类型作为参数的类就叫泛型
   作用:提高程序健壮性,简化代码
   泛型的默认值是Object

4. 装箱、拆箱(案例:快递)

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

//值类型 转换成引用类型 装箱
		int i = 1;
		Integer j = i;
		
		//引用类型转换成值类型 拆箱
		Integer k = 1;
		i = k;
		i = k.intValue();

5. ArrayList、LinkedList、Vector区别

   5.1ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
   5.2LinkedList:以链表的结构存储数据,查询慢、增删改快
   5.3Vector:增删改查都慢,已过时,同步.线程安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值