集合框架之List集合

目录

1.List集合特点

1.1.有序

1.2.不唯一

2.遍历方式

2.1.for

2.2. foreach 

2.3.迭代器 

3.删除 

3.1.for正向删除

3.2. for逆向删除

3.3. 迭代器删除

4.List 集合优化

5.泛型

6.装拆箱


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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值