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