List集合

1.List的集合特点:有序和不唯一

1.1有序

List集合数据存进去的顺序和取出来的顺序一致

List list=new ArrayList<>();
list.add("zs");
list.add("ls");
list.add("ww");
list.add("hh");
list.add("mm");
list.forEach(System.out::println);

 

1.2不唯一 

List集合数据允许添加重复数据

List lis=new ArrayList<>();
lis.add("zs");
lis.add("ls");
lis.add("ww");
lis.add("hh");
lis.add("mm");
lis.add("mm");
lis.forEach(System.out::println);

 

 输入了两个mm,但是并没有重叠在一起,而是显示出来了,所以数据可以重复

2.List集合的三种遍历方法

for,foreach,迭代器三种方式

2.1for

List list=new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

2.2 foreach

List list = new ArrayList<>();
list.add("zs");
list.add("ls");
list.add("ww");
for (Object str : list) {
    System.out.println(str);
}

2.3 迭代器

List list = new ArrayList<>();
list.add("zs");
list.add("ls");
list.add("ww");
Iterator iterator = list.iterator();
//hasNext 只判断是否存在,不会下移
//next 会往下执行
while (iterator.hasNext()){
    System.out.println(iterator.next());
}

 

三种遍历运行的效果都是像这样的

3.List集合的三种删除方法

for的正向删除和for的逆向删除及迭代器删除 这三种方式

3.1 for的正向删除

List list=new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
list.add("hh");
System.out.println("删除前的大小:"+list.size());
int size = list.size();
for (int i = 0; i < size; i++) {
    list.remove(0);
}
System.out.println("删除后的大小:"+list.size());
 

3.2 for的逆向删除

List list=new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
list.add("hh");
System.out.println("删除前的大小:"+list.size());
int size = list.size()-1;
for (int i = size; i >=0; i--) {
    list.remove(0);
}
System.out.println("删除后的大小:"+list.size());

3.3 迭代器删除

List list=new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
list.add("hh");
list.forEach(System.out::println);
System.out.println("删除前的大小:"+list.size());
Iterator iterator = list.iterator();
while(iterator.hasNext()){//hasNext只会是判断是否存在,不会移动下标
    iterator.next();//next会移动下标
    iterator.remove();//然后再删除
}
System.out.println("删除后的大小:"+list.size());

 

这是迭代器的删除运行方式

这是正向删除和逆向删除的运行方式

4.List集合的优化

初始化大小:10  
负载因子:1.5  向下取整
10*1.5=15
15*1.5=22.5=22
22*1.5=33
...
 List list=new ArrayList(50);
        for (int i = 0; i < 50; i++) {
            list.add(i);
            System.out.println(i);
            getLen(list);
        }

 public static void getLen(List list){
        //获取类对象
        Class listClass = list.getClass();
        try {
            //获取类对象中的属性
            Field field = listClass.getDeclaredField("elementData");
            //设置权限
            field.setAccessible(true);
            //获取属性的值
            Object[] object =(Object[])field.get(list);
            System.out.println("List集合的大小为:"+object.length);
        } catch (Exception e) {
           e.printStackTrace();
        }
}

List集合优化目的在于利用合理的存储空间存下所有元素数据,不多不少,不造成空间浪费。 

5.List集合的泛型

泛型:以类型作为参数的类就是泛型

泛型要在jdk>=1.5

  List<Integer> list=new ArrayList<>();
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
//            //移动并取出
//            Object next = iterator.next();
//            //类型转换
//            int i = Integer.parseInt(next.toString());
            int i=(int)iterator.next();
            //判断是否是偶数
            if(i%2==0){
                System.out.println(i);
            }
        }

6.装拆箱

装箱:值类型到引用类型

拆箱:引用类型到值类型

       //装拆箱
//        //装箱
        int a=10;
        Integer b=new Integer(a);
//
//        //拆箱
        Integer c=new Integer(10);
        int d=c.intValue();

 欧克啦

  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值