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);
        }
    }
  • 相关阅读:
    Android五天乐(第三天)ListFragment与ViewPager
    Thinking in States
    红黑树上的连接操作
    [LeetCode][Java] Binary Tree Level Order Traversal
    使用IR2101半桥驱动电机的案例
    HDU 4782 Beautiful Soup(模拟)
    C语言之基本算法38—格式化输出10000以内的全部完数
    远在美国的凤姐为何选择回国理財?
    2014-7-20 谁还认得这几本书?
    360在线笔试---反思两道题
  • 原文地址:https://www.cnblogs.com/wgl1995/p/9405728.html
Copyright © 2011-2022 走看看