HashSet Integer出力秩序、String出力無秩序

2011 ワード

1.背景


自分がHashSetをテストしたとき,その出力Integerは秩序化されていることが分かった.

2.テスト


public static void hashSetObjectTest(){
Set set = new HashSet();
 
set.add(6);
    set.add(3);
    set.add(2);
    set.add(1);
    set.add(4);  
    set.add(5);
   //set.add(100);
   //set.add(130);
   //set.add(22);
     
    System.out.println(「--------hashset出力秩序結果-------」); 
     
    for(Integer value : set){  
            System.out.print(value+"");  
    } 
     
    System.out.println();  
}

3.結果


------hashset出力秩序結果------
1 2 3 4 5 6 

4.分析


これは一種の仮象で、データが少ないとそうなる可能性がありますが、データが多くなると、無秩序になります.

4.1テスト

public static void hashSetObjectTest(){
		
<span style="white-space:pre">	</span>     Set<Integer> set = new HashSet<Integer>();
		 
	     set.add(6);
	     set.add(3);
	     set.add(2);
	     set.add(1);
	     set.add(4);  
	     set.add(5);
	     set.add(100);
	     set.add(130);
	     set.add(22);
	     
	     System.out.println("-------hashset  ---------");  
	     
	     for(Integer value : set){  
	            System.out.print(value+" ");  
	     } 
	     
	     System.out.println();  
	}

4.2結果

-------hashset  ---------
1 100 2 3 4 5 6 22 130 

だからテストの時、最も多くの測定データがあります.

4.3 java api説明

This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element.

このクラスはSetインタフェースを実現し,hash tableによって実現した.HashSetの反復器は出力時に「秩序を保証しない」が「無秩序を保証する」わけではない.つまり、出力時の秩序も許容されますが、あなたのプログラムはこれに依存するべきではありません.