JAVA中的容器

一、概述        

        java容器是javaAPI所提供的一系列类的实例,用于在程序中存放对象,严格来说是存放对象的引用。容器都是对于object类来处理,由于object类是所有类的基类,所以容器可以存放所有的java类。

        JAVA中的容器_第1张图片

        Collection接口定义了存取对象的方法,有两个子接口——Set、List。

        Set是无顺序并且不可重复的。List是有顺序可以重复的。

        Map接口提供了KEY-VALUE键值对存储机智。

二、List

       实现了该接口的类有LinkedList和ArrayList。

       LinkedList底层的数据结构是链式存储,读取数据较慢,需要一个个的next;但是修改效率高,删除或者添加只需要更改指针。

        ArrayList是顺序存储的数组形式,读取数据较快,直接用第一个和偏移量即可找到所要的位置;修改效率低,删除一个值,则后面都往前移动一个位置,添加一个值,则后面的都往后移动一个位置。ArrayList的创建,长度是固定的,若是长度不够了,则新建一个大的数组再把旧的数据复制进去,效率很低。

        java.util.Collections类提供了一些基于List的算法:

        

三、Set

        Set接口是Collection的子接口,Set接口没有提供额外的方法。实现Set接口的容器类中的元素是无序且不可重复的。(集合)

        JDK所提供的Set容器类有HashSet,TreeSet等。

四、Iterator、Comparable

       所有实现了Collection接口的类都有一个iterator()返回一个实现了Iterator接口的对象。

       这个对象叫做迭代器,用于遍历容器内的元素。有三个方法:

       JAVA中的容器_第2张图片

        举例:

        

Import java.util.*;
public class Test{
      public static void main(String[] args){
            Collection c=new HashSet();//父类引用指向子类对象
            c.add(new Name("f1","l1"));
            c.add(new Name("f2","l2"));
            Iterator i = c.iterator();
           while(i.hasNext()){
                  Name n = (Name)i.next();//next()返回值是object
                  System.out.print(n.getFirstName()+" ");
    }
  }
}
       遍历之后也可以进行排序,这时就可以用到Comparable接口了。

        该接口只有一个方法:public int compareTo(object obj); 返回0则表示this==obj;返回正数则表示this>obj;返回负数则表示this<obj;

举例:

<span style="font-family:Arial;">class Name implements Comparable { 
    private String firstName;  
    private String lastName;  
    public Name(String firstName, String lastName) {  
        this.firstName = firstName;  
        this.lastName = lastName;  
    }  

     public int compareTo(Object o) {  
        Name n = (Name)o;  
        int lastCmp = lastName.compareTo(n.lastName);  
        return   
            (lastCmp != 0 ? lastCmp :   //先比较姓氏  
            firstName.compareTo(n.firstName));                                                                                                                            </span><span style="font-family: Arial;">   }</span><span style="font-family: Arial;">                                                                                                                                                                               }</span>




你可能感兴趣的:(JAVA中的容器)