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());
}