• List集合ArrayList,LinkList


    1.List是Collection子接口,拥有其所有方法。
    2.List是有序集合,集合中每个元素都有对应顺序序列。List集合可使用重复元素,可以通过索引来访问指定位置的集合元素(顺序索引从0开始) List集合默认按元素的添加顺序设置元素的索引,类似数组。(有序可重复)
    3.ListIterator是Iterator的子接口,是List集合特有的迭代输出接口,它可以实现在迭代过程中对元素的增删改查。(详细介绍:http://blog.csdn.net/qq_36330228/article/details/77417163)
    4.List接口中常用类:
    Vector:线程安全,但速度慢,已被ArrayList替代
    ArrayList:线程不安全,查询速度快
    LinkList:链表结构,增删速度快

    package com.wql;
    
    import java.awt.List;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.ListIterator;
    
    /**
     * List集合演示
     * 
     * @author wql
     *
     */
    class Persons {
        private String name;
        private int age;
    
        public Persons(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Persons [name=" + name + ", age=" + age + "]";
        }
    
    }
    
    public class ListDemo {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            ArrayList list = new ArrayList();
            list.add(new Persons("张三1", 20));
            list.add(new Persons("张三1", 20));// 元素可以重复
            list.add(new Persons("张三2", 22));
            list.add(new Persons("张三3", 23));
            list.add(new Persons("张三4", 24));
    
            for (Iterator iterator = list.iterator(); iterator.hasNext();) {
                Object object = (Object) iterator.next();
                System.out.println(object);
            }
            // 删除元素
            list.remove(1);
            // 修改元素
            list.set(3, new Persons("张三5", 25));
            System.out.println("***********");
            for (Iterator iterator = list.iterator(); iterator.hasNext();) {
                Object object = (Object) iterator.next();
                System.out.println(object);
            }
    
        }
    
    }
    

    运行:
    这里写图片描述


    总结:
    1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
    2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
    3. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
    4. 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

  • 相关阅读:
    一文读懂 Serverless 的起源、发展和落地实践
    人人都是 Serverless 架构师 | “盲盒抽奖”创意营销活动实践
    如虎添翼!高德地图+Serverless 护航你的假日出行
    创新推出 | Serverless 调试大杀器:端云联调
    SpringBoot Serverless 实战 | 监控调试
    1688 复杂业务场景下的 Serverless 提效实践
    人人都是 Serverless 架构师 | 弹幕应用开发实战
    聚焦业务价值:分众传媒在 Serverless 上的探索和实践
    /rpx与px单位相互换算[[支付宝小程序]
    react权限组件
  • 原文地址:https://www.cnblogs.com/wangqilong/p/9417567.html
Copyright © 2020-2023  润新知