JAVA 二十二 List(ArrayList、LinkedList)

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

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值