目录
1.List集合特点
1.1.有序
List集合数据存进去和取出来的顺序是一致的
1.2.不唯一
List集合数据允许添加重复数据
2.遍历方式
有三种遍历方式:for foreach 迭代器
2.1.for
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); for (int i=0; i < lst.size(); i++){ System.out.println(lst.get(i)); }
2.2. foreach
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); for (Object o : lst) { System.out.println(o); }
2.3.迭代器
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); //获取迭代器 Iterator iterator = lst.iterator(); //遍历 // hasNext():用于判断迭代器中的下一个元素是否存在 while (iterator.hasNext()){ // next():移动下标并取出当前元素 Object next = iterator.next(); System.out.println(next); }
3.删除
三种删除方式:for正向删除,for逆向删除,迭代器删除
3.1.for正向删除
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); int size = lst.size(); System.out.println("删除之前集合大小:"+lst.size()); for (int i=0; i < size; i++){ lst.remove(0); } System.out.println("删除后集合大小:"+lst.size());
3.2. for逆向删除
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); int size = lst.size(); System.out.println("删除之前集合大小:"+lst.size()); for (int i=size-1; i >= 0; i--){ lst.remove(i); } System.out.println("删除后集合大小:"+lst.size());
3.3. 迭代器删除
List lst=new ArrayList(); lst.add("xx"); lst.add("zz"); lst.add("hh"); System.out.println("删除之前集合大小:"+lst.size()); Iterator iterator = lst.iterator(); while (iterator.hasNext()){ iterator.next(); iterator.remove(); } System.out.println("删除后集合大小:"+lst.size());
4.List 集合优化
概念:初始化容量10,负载因子1.5(向下取整)
扩容计算公式:容量大小*负载因子
目的:
List集合优化目的在于利用合理的存储空间存下所有元素数据,不多不少,不造成空间浪费。
public static void main(String[] args) { //List集合优化 //核心概念 //1.负载因子:1.5 //2.初始容量:10 //3.扩容计算公式:容量大小*负载因子(向下取整) List lst=new ArrayList(); for (int i = 0; i < 50; i++) { lst.add(i); System.out.println(i); getLen(lst); } } public static void getLen(List lst){ try { //获取类对象 Class aClass = lst.getClass(); //获取类对象中的属性 Field f = aClass.getDeclaredField("elementData"); //设置权限 f.setAccessible(true); //获取属性的值 Object[] o = (Object[]) f.get(lst); System.out.println("集合大小为:"+o.length); } catch (NoSuchFieldException | IllegalAccessException e) { throw new RuntimeException(e); } }
5.泛型
从java1.5开始提供泛型,泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率
//泛型:以类型为参数的类叫做泛型 //默认类型为Object //作用:提高程序的健壮性,简化代码 //JDK1.5以上才有 List lst=new ArrayList(); lst.add(2); lst.add(3); lst.add(4); lst.add(5); // lst.add("aa"); //获取迭代器 Iterator iterator = lst.iterator(); //循环遍历:判断下个元素是否存在 while (iterator.hasNext()){ //移动下标并取出元素 int next = (int)iterator.next(); //判断是否是偶数 if(next%2==0){ System.out.println(next); } }
6.装拆箱
顾名思义:送快递,寄快递时需要对物品进行包裹,收快递后就需要对包裹进行拆包。
//装拆箱 //装箱:值类型到引用类型 int a=10; Integer b=new Integer(a); //拆箱:引用类型到值类型 Integer c=new Integer(10); int i = c.intValue();