リスト集合


List集合List集合クラスでは要素が秩序正しく、かつ繰り返し可能であり、集合中の各要素には対応する順序インデックスがあり、List容器中の要素はいずれも整数型のシーケンス番号に対応して容器中の位置を記載し、シーケンス番号に基づいて容器中の要素にアクセスすることができる.
(1)List集合の用法List集合は、Listインタフェース及びListインタフェースの全ての実装クラスを含む.ListインタフェースはCollectionインタフェースを継承しているため、ListインタフェースはCollectionインタフェースが提供するすべての一般的なメソッドを有し、またListがリストタイプであるため、Listインタフェースは以下の表2に示すように、自身に適した一般的なメソッドを提供する.
上記の表から、リストインタフェースが提供する自身に適した一般的な方法は、リストセットがリストタイプであり、オブジェクトを線形に格納し、オブジェクトのインデックスによってオブジェクトを操作できるため、インデックスに関係していることがわかります.Listインタフェースの一般的な実装クラスにはArrayListとLinkedListがあり、Listセットを使用する場合、通常はListタイプとして宣言され、インスタンス化時には実際の状況の必要に応じてArrayListまたはLinkedListとしてインスタンス化される.例えば、List l 1=new ArrayList()//ArrayListクラスによるList集合List l 2=new LinkedList();//LinkedListクラスによるListコレクションのインスタンス化
注意:
ArrayListはスレッドが安全ではなく、Vectorはスレッドが安全であり、List集合スレッドが安全であることを保証するためにも、Vector効率が低くても使用を推奨しない.
(1.1)add(int index,Object obj)メソッドとset(int index,Object obj)メソッドの違いリストセットを使用する場合はadd(int index,Object obj)メソッドとset(int index,Object obj)メソッドを区別することに注意してください.前者は指定したインデックス位置にオブジェクトを追加し、後者は指定したインデックス位置を修正するオブジェクトです.例:
import java.util.*;  
public class TestList{  
    public static void main(String args[]){  
        String a = "A" , b = "B" , c =  "C" , d = "D" , e = "E";  
        List list = new LinkedList();  
        list.add(a);  
        list.add(e);  
        list.add(d);  
        list.set(1,b);//      1   e     b  
        list.add(2,c);//   c        2     
        Iterator it = list.iterator();  
        while(it.hasNext()){  
            System.out.println(it.next());  
        }  
    }  
}

プログラムの実行結果は以下の通りである:A B C Dリストセットはインデックス位置でオブジェクトにアクセスできるので、forループでリストセットを巡回することもでき、例えば上のコードのリストセットを巡回するコードは以下の通りである:
for(int i=0;i 
  

(1.2)indexOf(Object obj) lastIndexOf(Object obj)
List index(Object obj) lastIndexOf(Object obj) , , 。 List , List , 。

String a = "A" , b = "B" , c = "C" , d = "D" , repeat = "Repeat";  
List list = new ArrayList();  
list.add(a);      //     0  
list.add(repeat); //     1  
list.add(b);      //     2  
list.add(repeat); //     3  
list.add(c);      //     4  
list.add(repeat); //     5  
list.add(d);      //     6  
System.out.println(list.indexOf(repeat));  
System.out.println(list.lastIndexOf(repeat));  
System.out.println(list.indexOf(b));  
System.out.println(list.lastIndexOf(b));

プログラムの は の りである:1 5 2(1.3)subList(int fromIndex,int toIndex)メソッドは、subList(int fromIndex,int toIndex)メソッドを いて のListセットの を り って しいListセットを する に、 しく されたセットには インデックス のオブジェクトが まれているが、 インデックス のオブジェクトは まれていないことに する. :
String a = "A" , b = "B" , c = "C" , d = "D" , e = "E";  
List list = new ArrayList();  
list.add(a);  
list.add(b);  
list.add(c);  
list.add(d);  
list.add(e);  
list = list.subList(1,3);  
for(int i=0;i 
  


B
C


(2) ArrayList
ArrayList List , ArrayList List 。 , ,ArrayList , , , ArrayList List 。 , List , List , ArrayList List , , , , 2 。 , , 3 。 , 。






String a = "A" , b = "B" , c = "C" , d = "D" , e = "E";  
List list = new ArrayList();  
list.add(a);  
list.add(b);  
list.add(c);  
list.add(d);  
list.add(e);  
System.out.println(list.get((int)(Math.random()*5)));

プログラムの はランダムです.(3)LinkedListクラスLinkedListクラスを いてListインタフェースを し,LinkedListクラスで したListセットはチェーンテーブル でオブジェクトを する.チェーンテーブル の は、 へのオブジェクトの と が であることであり、 へのオブジェクトの や からのオブジェクトの が に である 、LinkedListクラスによって されるList を する が である.チェーンテーブル の は、ランダムにオブジェクトにアクセスする が いことであり、 のオブジェクトにランダムにアクセスする がある 、LinkedListはチェーンテーブルを し、 ノードは のノードと のノードを します.ループにより, のノードを または に けてインデックス のノードを つけ,LinkedListクラスを いて したList の が い.LinkedListクラスで されたListセットがオブジェクトの や を にする は、オブジェクトを または する に、 4および 5に すように、リンク を に するだけで、オブジェクトを する を くためである.
LinkedListクラスはまた、チェーンテーブル を いてオブジェクトを する に づいて、 の 3に すように、いくつかの の セットの を する.
:
String a = "A" , b = "B" , c = "C" , test = "Test";  
LinkedList list = new LinkedList();  
list.add(a);//     0  
list.add(b);//     1  
list.add(c);//     2  
System.out.println(list.getFirst());//              
list.addFirst(test);//              
System.out.println(list.getFirst());//              
list.removeFirst();//           
System.out.println(list.getFirst());//            

プログラムの は の りである:A Test A(4)のクライアント ソートリスト は、リスト を する 、 は から られるオブジェクトを の で べたいが、リスト のデフォルトのソート は、オブジェクトの に ってJavaを することができる.util.Collectionsクラスの メソッドsort(List list)、sort(List list、Comparator super T>c)、またはreverse(List>list)は、 のオブジェクトを ソートし、メソッドsort(List list)およびreverse(List>list)は、 のオブジェクトにjavaを する がある.lang.Comparableインタフェース、すなわち comparareTo()であり、この の な は の りである:public int comparareTo(T o);メソッドsort(List list)は、 のすべてのオブジェクトを の で べ、メソッドreverse(List>list)は、 のすべてのオブジェクトを の で べ える.メソッドsort(List list,Comparator super T>c)は、 のオブジェクトに してComparableインタフェースを はないが、このメソッドを する には、コンパレータ、すなわちメソッドの2 のエントリパラメータを に があり、コンパレータはjavaを がある.util.Comparatorインタフェース、すなわち comparare()は、int comparare(T o 1,T o 2);コンパレータの は、セット のすべてのオブジェクトのソートポリシーを することです. :リスト の ソートの は、リスト の が じタイプであることです.1、javaを する.lang.Comparableインタフェースは、 えば、ソースファイル:CnToSpell.JAva(ソースファイルはダウンロード CnToSpell.rar ファイルを )ソースファイル:Person.java
public class Person implements Comparable{  
    private String name;  
    private long id_card;  
    public String getName(){  
        return name;  
    }  
    public void setName(String name){  
        this.name = name;  
    }  
    public long getId_card(){  
        return id_card;  
    }  
    public void setId_card(long id_card){  
        this.id_card = id_card;  
    }  
    public int compareTo(Object o){//  Comparable       
        Person p = (Person)o;  
        String s1 = CnToSpell.getFullSpell(this.name);//         
        String s2 = CnToSpell.getFullSpell(p.getName());  
        return s1.compareTo(s2);//            
    }  
}

ソースファイル:TestList.java
import java.util.*;  
public class TestList{  
    public static void main(String args[]){  
        List list = new ArrayList();  
        String names[] = {"   "," ×××","   "};  
        long id_cards[] ={22015,22020,22018};  
        for(int i=0;i 
  



-----      22015
----- ×××     22020
-----      22018

-----      22018
-----      22015
----- ×××     22020

----- ×××     22020
-----      22015
-----      22018

List , , , 。
2、 java.util.Comparator

:Person.java

public class Person{  
    private String name;  
    private long id_card;  
    public long getId_card(){  
        return id_card;  
    }  
    public void setId_card(long id_card){  
        this.id_card = id_card;  
    }  
    public String getName(){  
        return name;  
    }  
    public void setName(String name){  
        this.name = name;  
    }  
}

ソースファイル:PersonComparator.java
import java.util.Comparator;  
public class PersonComparator implements Comparator{  
    //                      
    public static final int NAME = 1;  
    public static final int ID_CARD = 2;  
    private int orderByColumn = 1;//            
    public int compare(Object o1,Object o2){//  Comparator       
        Person p1 = (Person)o1;  
        Person p2 = (Person)o2;  
        int result = 0;//                
        switch(orderByColumn){//        
            case 1://       
                String s1 = CnToSpell.getFullSpell(p1.getName());//         
                String s2 = CnToSpell.getFullSpell(p2.getName());  
                result = s1.compareTo(s2);//            
                break;  
            case 2:  
                result = (int)(p1.getId_card()-p2.getId_card());//           
                break;  
        }  
        return result;  
    }  
    public void orderByColumn(int orderByColumn){//          
        this.orderByColumn = orderByColumn;  
    }  
}

ソースファイル:TestList.java
public class TestList{  
    public static void main(String args[]){  
        List list = new ArrayList();  
        String names[] ={"   "," ×××","   "};  
        long id_cards[] = {22015,22020,22018};  
        for(int i= 0;i 
  



-----      22015
----- ×××     22020
-----      22018

-----      22018
-----      22015
----- ×××     22020

-----22015     
-----22018     
-----22020      ×××

List , , , List 。 , , :

result = s1.compareTo(s2);

result = s2.compareTo(s2);

, , :

result = (int)(p1.getId_card()-p2.getId_card());

result = (int)(p2.getId_card()-p1.getId_card());