List集合和实现类

List集合接口规范概述

List接口继承自——Collection——Iterable

Iterable接口以循环迭代方式访问集合中的数据元素,定义了唯一一个返回指向集合的Iterable迭代器。它主要通过foreach方式处理集合中的元素,任何其实现类都可以通过获取指向集合的迭代实现对集合的遍历。

List接口简洁继承自Iterable接口并在Collection直接父类接口基础上定义更多的可操作方法,最典型就是定义了以索引方式操作集合元素的方法。

List集合接口常用方法

boolean add(Object e) //往集合末尾添加一个数,可以是任何类型,添加成功返回true
void add(int index,Object element) //在集合的index位置上插入一个Object类,执行效率不高
void clear() //把集合里的元素全部删除
boolean contains(Object o) //判断集合中是否包含Object类o,包含则返回true
Object get(int index) //用来获取集合中index位置的元素,返回值是Object类型
boolean isEmpty() //判断集合是否为空

Iterator<E> iterator() //迭代器,用来遍历集合中的元素 Object remove(int index) //移除index对象的元素,移除以后返回被移除对象的一个副本,实际上就是一个引用。如果没有,返回空 boolean remove(Object o) //移除索引index位置的元素,移除成功返回true,如果没有这个元素,返回false Object set(int index,Object element) //将index位置的元素,替换成element public int indexOf(String target,int fromIndex) //从index位置查找一个目标target,该方法几乎不用 int size() //获取集合的大小

ArrayList集合实现类

  ArrayList集合类是List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector类,除了此类是不同步的)。
ArrayList查找访问集合元素速度比较快,删除,插入随机操作比较慢,经常在企业级开发中使用ArrayList处理数据应用。
/**
 * 员工信息实体类
 */
public class Employee {

    private String name;
    private String sex;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}
import com.List.entity.Employee;

import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.SortedMap;

public class TestList {

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        List list=new ArrayList();
        /**
         * 从控制台接收信息封装3个Employee对象并存储在List集合中
         */
        Employee emp=null;
        System.out.println("请输入3个员工的信息");
        for (int i = 0; i < 3; i++) {
            emp=new Employee();
            System.out.println("请输入第"+(i+1)+"用户的姓名");
            String name=scanner.nextLine();
            emp.setName(name);
            System.out.println("请输入第"+(i+1)+"用户的性别");
            String sex=scanner.nextLine();
            emp.setSex(sex);
            list.add(emp);     //将员工对象添加到集合当中
        }

        //for循环遍历集合
        for(Object lists:list){
            Employee emps=(Employee)lists;
            System.out.println(emps.getName()+"\t"+emps.getSex());
        }
    }
}
     //使用当前集合获取指向集合的迭代器,使用迭代器遍历集合中的元素
        Iterator iterator=list.iterator();        //获取迭代器
        while (iterator.hasNext()){               //如果有元素对象

            Object obj=iterator.next();           //获取元素对象
            Employee employee=(Employee)obj;
            System.out.println(employee.getName()+"\t"+employee.getSex());
        }
     
    //清空所有元素
    list.clear();
    System.out.println(list.size());
 //判断集合是否包含对象
 System.out.println(list.contains(new Employee()));
 System.out.println(list.contains(emp));

运行结果:false
     true

 Vector集合实现类

Vector也被称为向量集合,和ArrayList非常类似都是可变的动态数组集合,最大区别是Vector是线程同步的,相对ArrayList数据处理效率要低;在多线程中通常使用Vector处理可能被多个线程并发访问的数据。

Vector集合具有ArrayList的所有方法外,增加了public Enumeration<E> elements()方法,此方法返回Enumeration枚举接口,可使用此接口实现对集合的遍历
/**
 * 测试向量集合Vector的使用,应用场景通常在处理多线程应用中
 */
public class TestVector {

    public static void main(String[] args) {

        Employee emp0=new Employee();
        emp0.setName("十三");
        emp0.setSex("男");
        Employee emp2=new Employee();
        emp2.setName("十四");
        emp2.setSex("女");
        Employee emp3=new Employee();
        emp3.setName("十五");
        emp3.setSex("男");

        Vector vector=new Vector();
        vector.add(emp0);
        vector.add(emp2);
        vector.add(emp3);

        for (Object vec:vector) {
            Employee employee=(Employee)vec;
            System.out.println(employee.getName()+"\t"+employee.getSex());
        }
    }
}
 Enumeration enumeration=vector.elements();  //vector独有的
        while (enumeration.hasMoreElements()){
            Object obj=enumeration.nextElement();
            Employee employee=(Employee)obj;
            System.out.println(employee.getName()+"\t"+employee.getSex());
        }

 

posted @ 2022-02-14 17:11  十三加油哦  阅读(122)  评论(0)    收藏  举报