JAVA 二十二 List(ArrayList、LinkedList)
标签: JAVA
ArrayList
import java.util.*;
import org.omg.CORBA.SystemException;
public class ListDemo {
/*
* Collection 集合1 可以储存任意类型数据
* 2长度可以改变
* 无序不唯一
*
* List 有序不唯一
* 因此该集合体系有对应的索引,索引也是从0开始
* |--ArrayList:底层采用的是数组的结构
*
* |--LinkedList:链表集合 底层采用的是链表的数据结构,优点插入、删除时速度快
* List特有方法
* 增加
* 1 void add(int index, E element);在List集合的指定位置,增加
* 2 boolean addAll(int index, Collection<? extends E> c);在List指定位置,增加一个集合,必须是List的泛型确定的类型或它的子类
* 查询
* 1 E get(int index);查询具体某个位置对应的数据
* 2 List<E> subList(int fromIndex, int toIndex);查询具体区间对应的数据,包含头不包含尾
* 遍历
* 1 使用Collection提供的迭代器
* 2 使用for循环
* 3 使用List特有的迭代器,ListIterator是Iterator的子接口
* Iterator在迭代时不可以对集合进行添加,删除,修改
* ListIterator可以
* 该接口是通过List
* 提供了set
* 修改
* E set(int index, E element);返回值是你被修改的对象
* 删除
* E remove(int index);删除指定位置的对象,返回值是删除的对象
*
*
* 增强for循环
* for(数据类型 变量名:循环数组或者集合){
* System.out.println(变量名);
* }
*
*
*/
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("aa", 10));
list.add(new Student("bb", 18));
list.add(new Student("cc", 19));
System.out.println(list);
list.add(2, new Student("dd", 20));
System.out.println(list);
list.addAll(2, list);
System.out.println(list);
System.out.println(list.get(2));
//System.out.println(list.subList(2, 5));
//第一种遍历方法
//Iterator<Student> it = list.iterator();
//while(it.hasNext()){
// System.out.println(it.next());
//}
//第二种遍历方法
//for(int i = 0;i < list.size();i++){
// System.out.println(list.get(i));
//}
//增强for循环:用于遍历数组和集合
for(Student stu : list){
System.out.println(stu);
}
//
//ListIterator<Student> lst = list.listIterator();
//while(lst.hasNext()){
// System.out.print(lst.nextIndex()+"||");
// if(lst.nextIndex()==5){
//lst.add(new Student("tianjia", 22));
//lst.set(new Student("xiugai", 33));
// lst.remove();
// }
// System.out.println(lst.next());
//}
//System.out.println(list);
list.set(3, new Student("oo", 33));
System.out.println(list.set(3, new Student("oo", 33)));
System.out.println(list);
System.out.println(list.remove(3));
System.out.println(list);
}
}
LinkedList
import java.util.LinkedList;
/*
* LinkedList 特有的方法
* void addFrst(E e) 给链表开头添加数据
* void addLast(E e) 给链表结尾添加数据
*
* E getFirst() 获取链表开头的数据
* E getLast() 获取链表结尾的数据,没有数据时回出现NoSuchElementException异常
*
* E peekFirst() 获取链表开头数据,没有数据时返回Null
* E peekLast() 获取链表结尾的数据
*
* E removeFirst() 删除链表开头的数据
* E removeLast() 删除链表结尾的数据,如果没有数据出现NoSuchElementException异常
*
* E pollFirst()
* E pollLast() 删除链表两头的元素如果没有数据则返回null
*/
public class LinkedListDemo {
public static void main(String[] args){
LinkedList<Student> list = new LinkedList<Student>();
list.add(new Student("AA", 18));
list.add(new Student("BB", 19));
list.add(new Student("CC", 20));
list.add(new Student("DD", 20));
System.out.println(list);
list.addFirst(new Student("开头添加",18));
list.addLast(new Student("结尾添加",18));
System.out.println(list);
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list.peekFirst());
System.out.println(list.peekLast());
System.out.println(list.pollFirst());
System.out.println(list.pollLast());
}
}