• List集合详解


    List集合是有序的,可重复的元素。里面每个元素都有索引,通过索引访问元素。

    List接口是Colletion的子接口,自然可以用里面的方法。额外的增加了通过索引访问集合元素的方法。如下

    package Test01;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestList {
           public static void main(String[] args) {
            List l =new ArrayList();
            List m =new ArrayList();
            m.add(new String("新的集合元素"));
            l.add(new String("eee"));
            l.add(new String("qqq"));
            System.out.println("第一次"+l);
            l.add(1, new String("啦啦啦"));    //在指定索引处添加元素
            l.add(2, new String("啦啦啦")); 
            System.out.println("第二次"+l);
            for(int i=0;i<l.size();i++) {
            System.out.println("每个元素分别为"+l.get(i));
            }
            l.remove(0);   //删除指定Index
            l.subList(0, 1);
            l.addAll(m);
            System.out.println(l);
            System.out.println(l.indexOf(new String("啦啦啦")));
            System.out.println(l.lastIndexOf(new String("啦啦啦")));
        }
    }

    上面的常见的

    还有void sort(Comparator comparator); 将Comparator规则给List排序

    void replaceAll(UnaryOperation operator)重新用operator计算规则给List排序

    那类比得,List判断集合元素相等的条件是什么呢?equals返回true

    以下例子重写了equals,看看得出什么结论

    package Test01;
    
    import java.util.ArrayList;
    import java.util.List;
    class A{
    
        @Override
        public boolean equals(Object obj) {
            // TODO Auto-generated method stub
            return true;
        }
    }
    public class TestList {
           public static void main(String[] args) {
            List l =new ArrayList();
              l.add(new String("eee"));
            l.add(new String("qqq"));
            System.out.println("删除前"+l);
            l.remove(new A());
            System.out.println("删除后"+l);
             
        }
    }

    List集合试图删除一个A对象,竟然删除了第一个元素。因为打算删除A时,调用了equals方法,和集合里的其他元素比较,返回true,就删除那个元素。 

    与Set集合不同只提供了一个Iterator(),List集合还额外提供了listIterator()增加反向迭代。

    举例

    package Test01;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.ListIterator;
    class A{
    
        @Override
        public boolean equals(Object obj) {
            // TODO Auto-generated method stub
            return true;
        }
    }
    public class TestList{
           public static void main(String[] args) {
            List l =new ArrayList();
            l.add(new String("eee"));
            l.add(new String("qqq"));
            l.add(new String("哈哈哈"));
             ListIterator lm = l.listIterator();
              while(lm.hasNext()) {
                  System.out.println(lm.next());
                  lm.add("---分隔符----");
              }
              System.out.println(l);
              while (lm.hasPrevious()) {
                 System.out.println(lm.previous());
                        
            }
        }
    }
  • 相关阅读:
    Servlet介绍(一)
    iOS Dev (50)用代码实现图片加圆角
    Codeforces Round #265 (Div. 2) D. Restore Cube 立方体推断
    JVM:垃圾回收机制和调优手段
    Memcachedclient-XMemcached使用
    JVM中类的卸载机制
    血型统计
    iOS 事件传递及响应过程
    java 对象参数去空格方式
    spring aop 一个挡板例子
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/9264576.html
Copyright © 2020-2023  润新知