List基本用法

  List最为Collection接口的子接口,固然可使用Collection接口里的所有方法。并且因为List是有序集合,所以List集合里增长了一些根据索引来操做集合元素的方法:spa

public class ListTest {
    public static void main(String[] args) {
        List names = new ArrayList();
        //向names集合中添加三个元素
        names.add("lmx");
        names.add("wgl");
        names.add(new String("孙悟空"));
        System.out.println(names);
        //将新字符串对象插入在第二个位置
        names.add(1, new String("猪八戒"));
        //使用for循环遍历list
        for(int i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
        //删除第三个元素
        names.remove(2);
        System.out.println(names);
        //判断指定元素在List集合中的位置:输出1,代表位于第二位
        System.out.println(names.indexOf(new String("猪八戒")));
        //将第二个元素替换成新的字符串对象
        names.set(1, new String("沙僧"));
        System.out.println(names);
        //将names集合的第二个元素(包括)到第三个元素(不包括)截取成子集合
        System.out.println(names.subList(1, 2));
    }
}

  List判断两个对象只要经过Equals()方法比较返回true便可,因此若是一个对象重写了equals()方法且返回值老是true,那么跟List集合中的元素比较时老是相等。看下面程序:code

class A {
    public boolean equals(Object obj) {
        return true;
    }
}

public class ListTest2 {
    public static void main(String[] args) {
        List names = new ArrayList();
        names.add(new String("lmx"));
        names.add(new String("wgl"));
        names.add(new String("孙悟空"));
        System.out.println(names);
        //删除集合中的A对象,将致使第一个元素被删除
        names.remove(new A());
        System.out.println(names);
        //删除集合中的A对象,再次删除集合中的第一个元素
        names.remove(new A());
        System.out.println(names);
    }
}

   与Set只提供了一个iterator()方法不一样,List还额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操做List的方法:对象

public class ListIteratorTest {
    public static void main(String[] args) {
        String[] names = {
                "lmx",
                "wgl"
        };
        List nameList = new ArrayList();
        for(int i = 0; i < names.length; i++) {
            nameList.add(names[i]);
        }
        ListIterator lit = nameList.listIterator();
        while(lit.hasNext()) {
            System.out.println(lit.next());
            //在指定位置插入一个元素
            lit.add("-----分隔符-----");
        }
        System.out.println("=====下面开始反向迭代=====");
        while(lit.hasPrevious()) {//是否还有上一个元素
            System.out.println(lit.previous());
        }
    }
}

  从上面程序中能够看出,使用ListIterator迭代List集合时,开始业务要采用正向迭代,即先使用next()方法进行迭代,在迭代过程当中可使用add()方法向上一次迭代元素的后面添加一个新元素。运行上面的程序,看到以下结果:blog

   下面代码使用LinkedList来实现队列和栈的操做:继承

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList names = new LinkedList();
        //将字符串元素加入队列的尾部
        names.offer("孙悟空");
        //将一个字符串元素加入栈的顶部
        names.push("wgl");
        //将字符串元素添加到队列的头部(至关于栈的顶部)
        names.offerFirst("lmx");
        for(int i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
        //访问但不删除栈顶的元素
        System.out.println(names.peekFirst());
        //访问但不删除队列的最后一个元素
        System.out.println(names.peekLast());
        //将栈顶的元素弹出"栈"
        System.out.println(names.pop());
        //下面输出将看到队列的第一个元素被删除
        System.out.println(names);
        //访问并删除队列的最后一个元素
        System.out.println(names.pollLast());
        //下面输出将看到队列中只剩下中间一个元素
        System.out.println(names);
    }
}
相关文章
相关标签/搜索