コンテナ-シングルトンコレクションのユースケース(14)
-
要件:1〜10([1,10]並列間隔)の乱数を生成し、10回繰り返される乱数をコンテナーに入れます。
-
リストタイプのコンテナを使用して実装
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); } } }
-
セットタイプのコンテナクラスを使用して、
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); } } }
-
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值 }
-
分析するハッシュアルゴリズムの原理から、
-