Java :List

1、List是一个接口,不能实例化,需要实例化一个ArrayList或者LinkedList
List myList = new ArrayList();
2、List中可以添加任何对象,包括自己定义的新的类。 

  • class Person{
    .....
    }
    上面定义了一个Person类,下面看好如何使用List
    Person p1=new Person();
    Person p2=new Person();
    List myList=new ArrayList();
    myList.add(p1);
    myList.add(p2);//这里是将对象加入到list中
    for(int i=0;i<2;i++){
    Person p=(Person)myList.get(i);//注意,这里一定要强制类型转换,因为List中取出的对象都是Object类型的,希望对你有所帮助

    }

    3、使用myList.add(任何对象);就可以进行添加了。
    4、取值的时候myList.get(索引);取出来的值都是Object,使用时需要类型转换。
    5、可用Iterator迭代器对List中的元素进行迭代操作
    List 集合中的对象按照一定的顺序排放,里面的内容可以重复。

    List常用方法:
    List<E>([]内的内容可省略),与数组类似:
    实例化:List[<数据类型>] list = new ArrayList[<数据类型>]();
    1、获得集合内元素个数:list.size();
    2、添加元素:
    默认添加:list.add(e);
    指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
    3、删除元素:
    返回是否删除:list.remove(e);
    直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
    4、替换元素(替换掉指定下标的元素):list.set(index,e);
    5、取出元素:list.get(index);
    6、清空集合:list.clear();
    7、判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
    8、对比两个集合中的所有元素:
    两个对象一定相等:list.equals(list2);
    两个对象不一定相等:list.hashCode() == list2.hashCode();
    (两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。)
    9、获得元素下标:
    元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);
    元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
    10、判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
    11、返回Iterator集合对象:list.iterator();
    12、将集合转换为字符串:list.toString();
    13、截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);
    14、将集合转换为数组:
    默认类型:list.toArray();
    指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);
    List接口实现的类:ArrayList(实现动态数组), Vector(实现动态数组) ,LinkedList(实现链表), Stack(实现堆栈)
    1.java.util.ArrayList类实现一个可增长的动态数组,平时用的比较多的就是add()方法,其它方法
    请参考API帮助文档。使用该方法向集合内添加对象,并且这些对象是按照一定的顺序排列
    的,它内部原理是数组实现的,因此处理数据量较大时,不建议使用。
    public class TestArrayList {

    public static void main(String[] args) {
    //声明List 并实例化为ArrayList
    List al = new ArrayList();
    //使用add()方法添加元素
    al.add("a");
    al.add("b");
    al.add("c");
    al.add("d");
    //使用Iterator迭代器遍历出集合的元素并打印
    for(Iterator i = al.iterator();i.hasNext(); ){
    String str = (String) i.next();
    System.out.println(str);
    }
    }

    }
    2.java.util.Vector(向量)类 与ArrayList类似的也是实现一个动态的数组,该向量可以随意的增长以存放更多的对象


    public class TestArrayList {

    public static void main(String[] args) {
    //声明List 并实例化为Vector
    List al = new Vector();
    //使用add()方法添加对象
    al.add("a");
    al.add("b");
    al.add("c");
    al.add("d");
    //使用Iterator迭代器遍历出集合的对象并打印
    for(Iterator i = al.iterator();i.hasNext(); ){
    String str = (String) i.next();
    System.out.println(str);
    }
    }

    }
    3.java.util.LinkedList类实现了链表,可初始化化为空或者已存在的集合,通常使用以下方法
    add();向链表末尾添加对象。
    addFirst()在链表开头添加对象。
    addLast()在链表末尾添加对象。
    getFirst()得到链表开头的对象。
    getLast()得到链表末尾的对象。
    注意该类提供了随机访问列表中的元素的方法,但是底层依然必须遍历去查找随机访问的对象,因此性能依然有限.

    public static void main(String[] args) {
    //声明LinkedList并实例化
    LinkedList al = new LinkedList();
    //使用add()方法添加元素
    al.add("a");
    al.add("b");
    al.add("c");
    al.add("d");
    //使用Iterator迭代器遍历出集合的元素并打印
    for(Iterator i = al.iterator();i.hasNext(); ){
    String str = (String) i.next();
    System.out.println(str);
    }
    System.out.println("_____");
    //向链表头和尾分别添加x和z
    al.addFirst("z");
    al.addLast("x");
    //遍历查看添加后的结果
    for(Iterator i = al.iterator();i.hasNext(); ){
    String str = (String) i.next();
    System.out.println(str);
    }

    }

    4.java.util.Stack类实现了堆栈数据结构,即按照先进后出的原则存放数据。创建时只能为空。
    使用push()方法进行添加对象
    public static void main(String[] args) {
    //声明Stack并实例化
    Stack al = new Stack();
    //使用push()方法添加元素
    al.push("a");
    al.push("b");
    al.push("c");
    al.push("d");
    al.push("f");
    //使用Iterator迭代器遍历出集合的元素并打印
    for(Iterator i = al.iterator();i.hasNext(); ){
    String str = (String) i.next();
    System.out.println(str);
    }
    }
    _____________________________
    Example added by myself:  
    public class Test { 
     
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      ArrayList list = new ArrayList();
      list.add(0,"aa");
      list.add(1,"bb");
      list.add(2,"cc");
      for(int i=0;i<10;i++)
      {
       
       list.add(Integer.toString(i));
      }
      for(int i=0;i<list.size();i++)
      {
       System.out.println(list.get(i));
      }
      for(Iterator i=list.iterator();i.hasNext();)
       //首先定义一个list对象的Iterator,然后利用该Iterator进行循环迭代操作
      {
       String s =(String)i.next();
       System.out.println(s);
      }
     }
    } 

 
原文地址:https://www.cnblogs.com/xuepei/p/3664772.html