zoukankan      html  css  js  c++  java
  • List基本用法

      List最为Collection接口的子接口,当然可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法:

    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集合中的元素比较时总是相等。看下面程序:

    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()方法向上一次迭代元素的后面添加一个新元素。运行上面的程序,看到如下结果:

       下面代码使用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);
        }
    }
  • 相关阅读:
    (Good Bye 2019) Codeforces 1270B Interesting Subarray
    (Good Bye 2019) Codeforces 1270A Card Game
    Codeforces 1283D Christmas Trees(BFS)
    Codeforces 1283C Friends and Gifts
    Codeforces 1283B Candies Division
    1095 Cars on Campus (30)
    1080 Graduate Admission (30)
    1099 Build A Binary Search Tree (30)
    1018 Public Bike Management (30)
    1087 All Roads Lead to Rome (30)
  • 原文地址:https://www.cnblogs.com/wgl1995/p/9405728.html
Copyright © 2011-2022 走看看