コンテナ-シングルトンコレクションのユースケース(14)

コンテナ-シングルトンコレクションのユースケース(14)

  1. 要件:1〜10([1,10]並列間隔)の乱数を生成し、10回繰り返される乱数をコンテナーに入れます。

  2. リストタイプのコンテナを使用して実装

    import java.util.ArrayList;
    import java.util.List;
    
    public class ListDemo {
          
          
        public static void main(String[] args) {
          
          
            List<Integer> list=new ArrayList<>();
            while (true){
          
          //我们不知道要循环几次,因为是随机的,干脆就给了个死循环
                //产生随机数
                int num = (int) (Math.random() * 10 + 1);
                //判断当前元素i容器中是否存在
                if (!list.contains(num)){
          
          
                    list.add(num);
                }
                //结束循环
                if (list.size()==10){
          
          
                    break;
                }
            }
            //遍历list集合中的元素
            for (Integer i:list){
          
          
                System.out.println(i);
            }
        }
    }
    
    
  3. セットタイプのコンテナクラスを使用して、

    import java.util.HashSet;
    import java.util.Set;
    
    public class SetDemo {
          
          
        public static void main(String[] args) {
          
          
            Set<Integer> set=new HashSet<>();
            while (true){
          
          
                int num=(int)(Math.random()*10+1);
                //将元素添加容器中,由于Set类型容器是不允许有重复元素的,所以不需要判断
                set.add(num);
                //结束循环
                if (set.size()==10){
          
          
                    break;
                }
            }
    
            for (Integer i:set){
          
          
                System.out.println(i);
            }
        }
    }
    
  4. Setタイプのコンテナクラスの実装にはいくつかの問題があります。出力された数値は順番に並んでいますが、HashSetは並べ替えられていません。TreeSetのみが並べ替えられていますが、結果が順番になっているのはなぜですか。回答:これは偽物で整然としたものです。HashCodeを分析することでわかります。

    • 最初に整数のソースコードを入力し、Ctrl + Fショートカットキーを使用してhashCodeを検索します

         /**
           * Returns a hash code for a {@code int} value; compatible with
           * {@code Integer.hashCode()}.
           *
           * @param value the value to hash
           * @since 1.8
           *
           * @return a hash code value for a {@code int} value.
           */
          public static int hashCode(int value) {
              
              
              return value;//我们可以看到hashCode是返回一个int类型的Value值
          }
      
    • 分析するハッシュアルゴリズムの原理から、

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Xun_independent/article/details/114747674