栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

集合框架之List

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合框架之List

目录

1.UML

2.List集合特点

3.三种遍历方式

4.LinkedList

5.增长因子论

6.集合框架ArrayList中的重复元素去重复及底层原理


1.UML

主要是画逻辑图的

2.List集合特点

主要是以增,删,改,查

增,删,改,查的代码:

案例1:

ArrayList list = new ArrayList<>();
        //新增
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
        //查询
        System.out.println(list.get(1));
        for (Object obj : list) {
            System.out.println(obj);
            
        }
        //修改
        list.set(1, "哈哈");
        System.out.println("------------------");
        for (Object obj : list) {
            System.out.println(obj);
            
        }
        //删除
        Object obj2 = list.remove(1);//返回值是删除的元素
        System.out.println("bb");
        System.out.println("------------------");
        for (Object obj : list) {
            System.out.println(obj);
            
        }

案例2:

将1,4,6,9,11,8 剔除集合中的奇数

错误展示:

ArrayList list2 = new ArrayList<>();
        list2.add("1");
        list2.add("4");
        list2.add("6");
        list2.add("9");
        list2.add("11");
        list2.add("8");
        for (String obj : list2) {
            if(Integer.valueOf(obj)%2==0) {
                list2.remove(obj);
                
            }
        }

结果:会报当前改变异常将无法执行,如下图:

 结论:做集合元素剔除,不能在原集合遍历的时候进行操作

正确展示:

在加一个list加进去就好了

3.三种遍历方式

 迭代器:

System.out.println("------迭代器--------");
        Iterator it = list.iterator();
        System.out.println(it.hasNext());
        System.out.println(it.next());
    }

4.LinkedList

思路:

堆栈:如图所示

特点:先进后出

队列:

特点:先进先出

代码展示

 堆栈代码

5.增长因子论

list集合如何进行优化
 *     当代码中出现了多次add操作,涉及到了list集合容量多次改变,这是十分耗性能的操作,此时通过
 * 设定初始化容量,即可优化性能
 * 
 * 
 * list集合长度是可变的,数组长度是不可变的;
 * 结论1:list集合底层的数据结构是数组
 * 结论2:增长因子 0.5,初始容量 10
 

    public static void main(String[] args) throws Exception {
//        String[] arr = new String[10];
//        arr = new String[11];
//        arr[11] = "zs";
//        arr = new String[12];
//        arr[12] = "zs";
        ArrayList list = new ArrayList<>(100);
        for (int i = 0; i < 200; i++) {
            list.add(i);
            getlen(list);
        }
    }

    private static void getlen(ArrayList list) throws Exception {
        Field f = list.getClass().getDeclaredField("elementData");
        f.setAccessible(true);
        Object[] elementData = (Object[]) f.get(list);
        System.out.println("当前集合的元素个数:"+list.size()+";当前list集合的容量是:"+elementData.length);
    }

6.集合框架ArrayList中的重复元素去重复及底层原理

public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        //新增
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
        list.add("aa");
        System.out.println(list);
        
        ArrayList listnew = new ArrayList<>();
        for (Object object : list) {
            if(!listnew.contains(object)) {
                listnew.add(object);
            }
        }
        System.out.println(listnew);
        
    }
    
        

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号