一. List集合介绍
UML图:

1.1List接口常用方法:
| 方法 | 解释 |
|---|---|
| add(Object element) | 向列表的尾部添加指定的元素 |
| size() | 返回列表中的元素个数 |
| get(int index) | 返回列表中指定位置的元素,index从0开始 |
| add(int index, Object element) | 在列表的指定位置插入指定元素 |
| set(int i, Object element) | 将索引i位置元素替换为元素element并返回被替换的元素 |
| clear() | 从列表中移除所有元素 |
| isEmpty() | 判断列表是否包含元素,不包含元素则返回 true,否则返回false |
| contains(Object o) | 如果列表包含指定的元素,则返回 true |
| remove(int index) | 移除列表中指定位置的元素,并返回被删元素 |
| remove(Object o) | 移除集合中第一次出现的指定元素,移除成功返回true,否则返回false |
| iterator() | 返回按适当顺序在列表的元素上进行迭代的迭代器 |
List集合有三个儿子ArrayList和Vector还有一个LinkedList,它们各有各的特性只有ArratList完美继承了它父亲的所有特点
1.2特点:
基于数组实现的
List集合的特点是有序,可重复它的所有儿子都继承了这两个特点
二. Arraylist
arraylist继承了它父亲的所有方法,下面是两个方法的示范
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
//<>表示泛型可以指定数据类型比如填String那么这个集合就只能填字符串类型
ArrayList<String> list = new ArrayList<String>();
list.add("user"); //add()用于向List集合容器中添加元素。
list.add("text");
System.out.println(list);
System.out.println(list.size()); //size()用于获取集合的长度。
System.out.println(list.get(1)); //get()获取指定下标(从0开始)位置的元素。
}
}
arraylist是没有线程安全锁的可以查看源码看一下
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
三. Vector
Vector特点:增删改查都慢,已过时,安全,加了线程锁,并且继承了它父亲的特点有序可重复
四. LinkedList
特点:链条式存储,有序可重复,因为是链条式存储所以导致它查询慢增删改快
子弹夹案例:
public class MyStack {
//弹夹:
private LinkedList ls=new LinkedList();
//装弹(压栈):
public void push(Object obj){
ls.addFirst(obj); //每次都把子弹增加到第一颗,把原来的压到下面去
}
//打枪(出栈):
public Object pop(){
Object obj = ls.getFirst();//取出第一颗子弹
ls.removeFirst(); //移除第一颗子弹
return obj;//返回刚刚打出的子弹
}
//计算弹夹中子弹数量:
public int size(){
return ls.size();
}
public static void main(String[] args) {
MyStack ms=new MyStack();
ms.push("a");//装第一颗子弹
ms.push("b");
ms.push("c");
ms.push("d");//装最后一颗子弹
while(ms.size()!=0){//如果子弹数量不等于0,就一直循环
System.out.println(ms.pop());
}
}
}
五. 循环取值方法
ArrayList取值方法
//()里面是初始化集合的大小/长度
List list=new ArrayList<>(50);
list.add("字符串");
list.add('a');
list.add(1);
list.add(true);
//遍历方式一(foreach)
for (Object o : list) {
System.out.println(o);
}
//遍历方式二(通过下标)
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
//迭代器(官方推荐使用)
Iterator it = list.iterator();
while(it.hasNext()) {//是否有下一个值
Object next = it.next();//取值
System.out.println(next);
}
Vector取值方式
Vector vc=new Vector();
vc.add("字符串");
vc.add(1);
vc.add('a');
vc.add(true);
//foreach取值(快速简便)
for (Object o : vc) {
System.out.println(o);
}
//for循环取值
for (int i = 0; i < vc.size(); i++) {
System.out.println(vc.get(i));
}
//迭代器(官方推荐使用)
Iterator iterator = vc.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
LinkedList取值方法
LinkedList link=new LinkedList<>();
link.add("字符串");
link.add(1);
link.add('a');
link.add(true);
//foreach取值(快速简便)
for (Object o : link) {
System.out.println(o);
}
//for循环取值
for (int i = 0; i < link.size(); i++) {
System.out.println(link.get(i));
}
//迭代器(官方推荐使用)
Iterator iterator = link.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
详解Java List接口与子类ArrayList, Vector, LinkedList
本文介绍了List接口及其常用方法,重点讲解了ArrayList、Vector和LinkedList的特点,通过实例演示了循环取值的不同方法。
1779

被折叠的 条评论
为什么被折叠?



