• Java从零开始学二十一(集合List接口)


    一、List接口

    List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下:
    public interface List<E> extends Collection<E>

    二、List接口的扩展方法

    No.
    方法
    类型
    描述
    1
    public void add(int index, E element)
    普通
    在指定位置增加元素
    2
    public boolean addAll(int index, Collection<? extends E> c)
    普通
    在指定位置增加一组元素
    3
    E get(int index)
    普通
    返回指定位置的元素
    4
    public int indexOf(Object o)
    普通
    查找指定元素的位置
    5
    public int lastIndexOf(Object o)
    普通
    从后向前查找指定元素的位置
    6
    public ListIterator<E> listIterator()
    普通
    为ListIterator接口实例化
    7
    public E remove(int index)
    普通
    按指定的位置删除元素
    8
    public List<E> subList(int fromIndex, int toIndex)
    普通
    取出集合中的子集合
    9
    public E set(int index, E element)
    普通
    替换指定位置的元素

     三、List接口的常用子类 —— ArrayList和LinkedList

    ArrayList实现了长度可变的数组,在内存中分配连接的空间,遍历和随机访问元素的效率比较高
    LinkedList采用链表存储方式。在插入、删除元素时效率比较高
     

    四、ArrayList例子

    package com.pb.demo1;
    
    public class Person {
       private String name;
       private int age;
       
    public Person() {
    
    }
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }  
    }
    package com.pb.demo1;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class PersonArrayListTest {
    
        public static void main(String[] args) {
            /*
             * 创建多个Person对象并赋值
             */
             Person p1 = new Person("张三",21);
             Person p2 = new Person("李四",22);
             Person p3 = new Person("王五",23);
             //创建ArrayList
           List<Person> personlist=new ArrayList<Person>();
           
           //为集合添加对象
           personlist.add(p1);
           personlist.add(p2);
           personlist.add(p3);
           //输出集合的长度
           System.out.println("集合长度:"+personlist.size());
           //遍历集合for循环
           for(int i=0; i<personlist.size();i++){
               System.out.println("姓名:"+personlist.get(i).getName()+"年龄:"+personlist.get(i).getAge());
           }
    
           //使用索引添加
           Person p4 = new Person("赵六",24);
           /*
            * 使用索引添加时必须知道长度才可以正确增加,如果添加的索引大于最后一个下标+1,
            * 编译可以通过但运行时会报错
            * 例如:如查长度为3,下标是从0开始到2,这时使用索引添加值索引可以是(0~3)都可以,但是不能是4
            */
    
           personlist.add(0, p4);
           //输出集合的长度
           System.out.println("集合长度:"+personlist.size());
           ////遍历集合forearch循环
           for (Person p : personlist) {
               System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
        }
           
           //查找集合中是否有p4对象true代表有,false代表没有
           System.out.println("查找集合中是否有p4对象:"+personlist.contains(p4));
           //p2元素所在的下标从前向后
        System.out.println("p2元素所在的下标从前向后:"+ personlist.indexOf(p2));
        //p2元素所在的下标从后向前
        System.out.println("p2元素所在的下标从后向前:"+ personlist.lastIndexOf(p2));
           
        }
    
    }

    五、LinkedList例子

    package com.pb.demo1;
    
    import java.util.LinkedList;
    import java.util.List;
    
    public class PersonLinkedListTest {
    
        public static void main(String[] args) {
            /*
             * 创建多个Person对象并赋值
             */
             Person p1 = new Person("张三",21);
             Person p2 = new Person("李四",22);
             Person p3 = new Person("王五",23);
             Person p4 = new Person("赵六",24);
             Person p5 = new Person("钱七",25);
             
             //创建LinkedList
             LinkedList<Person>plist=new LinkedList<Person>();
             plist.add(p1);
             plist.add(p2);
             plist.add(p3);
             //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
            //在第一个和最后一个添加对象
             plist.addFirst(p4);
             plist.addLast(p5);
             System.out.println("===========添加数据=================");
             //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
          
             //获取指定下标的元素:下标要已经存在如果不存在运行后将报错
             System.out.println("获取指定下标的元素:"+plist.get(4).getName());
             System.out.println("===========按下标移除=================");
             //移除元素remove,按下标移除
             plist.remove(0);
            //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
             System.out.println("===========直接移除对象=================");
             //移除元素remove 直接移除对象,
             plist.remove(p2);
            //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
             System.out.println("===========移除第一个或者最后一个=================");
             //移除元素移除第一个或者最后一个
             plist.removeFirst();
             plist.removeLast();
            //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
             System.out.println("===========移除全部=================");
             //移除全部元素clear方法
             plist.clear();
            //集合长度
             System.out.println("集合长度"+plist.size());
             //遍历集合
             for (Person p : plist) {
                 System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());
            }
             
        }
    
    }

    六、Vector类

    在List接口中还有一个子类:Vector,Vector类属于一个挽救的子类,从整个JAVA的集合发展历史来看,Vector算是一个元老级的类,在JDK 1.0的时候就已经存在类此类。但是到了JAVA 2(JDK 1.2)之后重点强调了集合框架的概念,所以先后定义了很多的新接口(如:List等),但是考虑到一大部分的人已经习惯了使用Vector类,所以JAVA的设计者,就让Vector类多实现了一个List接口,这才将其保留下来。但是因为其是List子类,所以Vector类的使用与之前的并没有太大的区别。
    package com.pb.demo1;
    
    import java.util.Vector;
    
    public class VectorTest {
    
        public static void main(String[] args) {
            
            Vector<String> plist=new Vector<String>();
            
            plist.add("张三");
            plist.add("李四");
            plist.add("王五");
            plist.add("赵六");
            System.out.println("长度:"+plist.size());
            for (String s : plist) {
                System.out.println(s);
            }
    
        }
    
    }
  • 相关阅读:
    (零 ) 天猫精灵接入Home Assistant-总说明
    (二 -2) 天猫精灵接入Home Assistant-自动发现Mqtt设备
    (二 -1) 天猫精灵接入Home Assistant-控制Mqtt设备
    如何在关闭ssh连接的情况下,让程序继续运行?
    hass连接设备
    (一 ) 天猫精灵接入Home Assistant-服务器搭建
    (一) 天猫精灵接入Home Assistant- hass对接天猫精灵
    (3)HomeAssistant 连接MQTT
    (2)HomeAssistant 参数配置
    (1)HomeAssistant 安装开始
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4298882.html
Copyright © 2020-2023  润新知