* List集合继承了Collection集合的全部功能,同时因为List系列集合有索引
* 因为List集合多了索引,所以多了很多按照索引操作元素的功能
* for循环,Lambda表达式,foreach,迭代器
List系列集合:添加的元素是有序,不重复,有索引
* --ArrayList:有序,不重复,有索引
* --linkedList:有序,不重复,有索引
* --Vector(被ArrayList代替)
* ArrayList 是实现类集合底层基于数组存储数据的,查询快,增删慢
* public void add(int index,E element):将指定的元素,添加到该集合中的指定位置
* public E get(int index):返回集合中指定位置的元素
* public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素
* public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值的* 更新前的元素
*
* 小结;
* List系列街喊有序,可重复,有索引
* ArrayList是西安类集合底层基于数组存储的数据的。查询快,增删慢
* 开发中ArrayList集合用的最多
public class DemoArrayList {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("mysql");
list.add("mysql");
list.add("java");
list.add("java");
//add
list.add(2,"Java");
list.forEach(System.out::println);//foreach
System.out.println("------------------");
//get
System.out.println(list.get(2));
Iterator iterator = list.iterator();//迭代器
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("------------------");
//remove
System.out.println(list.remove(2));
for (Object o : list) {//Lambda
System.out.println(o);
}
System.out.println("------------------");
//set
list.set(1, "Mybatis");
for (int i = 0; i < list.size(); i++) {//for循环
Object o = list.get(i);
System.out.println(o);
}
}
}
* linkedList也是list的实现类,
* 底层是基于链表的,增删比较快,查询比较慢
* linkedList是支持双链表,定位前后的元素非常快,增删守卫元素也是最快的
* 所以linkedList除了拥有List集合的全部功能还多了很多操作首尾元素的特殊功能
* addFirst():将指定元素插入此列表的开头
* addLast():将指定元素添加到此列表的结尾
* getFirst():返回此列表的第一个元素
* getList():返回此列表的最后一个元素
* removeFirst():移除并返回此列表的第一个元素
* removeLast():移除并返回此列表的最后一个元素
* pop():从此列表所表示的堆栈弹出一个元素
* push():将元素推入此元素列表所表示的堆栈
*小结:linkedList是支持双链表,定位前后的元素非常快,增删守卫元素也是最快的
* 所以提供了喝多操作首尾元素的API可以做栈和队列
*
* 如果查询多增删少用ArrayList集合
* 如果查询少增删首尾多用ListedList集合
public class DemolinkedList {
public static void main(String[] args) {
//做个队列:先进先出
linkedList queue = new linkedList<>();
queue.addLast("1号");//入队
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue);//[1号, 2号, 3号, 4号]
System.out.println(queue.removeFirst());//出队
System.out.println(queue.removeFirst());
System.out.println(queue);//[3号, 4号]
//做个栈,先进后出
linkedList stack = new linkedList<>();
stack.push("1号");//压栈,this.addFirst()
stack.push("2号");
stack.push("3号");
stack.push("4号");
System.out.println(stack);//[4号, 3号, 2号, 1号]
System.out.println(stack.pop());//弹栈,this.removeFirst()
System.out.println(stack.pop());//3号
System.out.println(stack);//[2号, 1号]
}
}
Vector:线程安全,速度慢,已经被ArrayList代替(过期了)