C# における指定範囲の乱数生成と唯一性確保の実装手法
System.Random クラスの基本的な活用
C# において乱数を生成する際、標準ライブラリである System.Random クラスが主に使用されます。このクラスを利用することで、整数や小数など、さまざまなデータ型のランダムな値を取得することが可能です。ただし、短い時間間隔で複数回インスタンス化すると、同じ種子(シード)が使用され、結果として同一の値が生成されるリスクが ...
7月28日 16:34 投稿
二分探索木とハッシュ表
二分探索木の概念
二分探索木は、空の木または以下の性質を持つ二分木です。
左部分木が空でない場合、左部分木のすべてのノードの値は根ノードの値より小さい。
右部分木が空でない場合、右部分木のすべてのノードの値は根ノードの値より大きい。
左右の部分木もまた二分探索木である。
TreeSetやTreeMapは内部的に赤黒木(平衡二分探索木)を使用しており、中間順巡回 ...
5月21日 01:14 投稿
Javaコレクションフレームワーク入門:ListとSetの基本
Javaのコレクションフレームワークは、主に以下の2つの大分類に分けられる。
Collection:List、Set、Queueが含まれる。
Map:キーと値のペアを管理するインターフェース。
Listインターフェース
Listは順序付きで重複を許容するコレクションであり、インデックスによる要素アクセスが可能である。
ArrayList
ArrayListは内部的に動的配列を用いて実装されており ...
5月15日 22:00 投稿
Javaの並行処理における ArrayList・HashSet・HashMap のスレッドセーフ問題
ArrayList の問題点
まずは ArrayList を取り上げます。ArrayList は 다음과 같이宣言できますが、複数のスレッドから同時にアクセスすると問題が発生します。
ArrayList<String> dataList = new ArrayList<>();
ArrayList の内部構造について解説します。JDK 7 以前では、初期容量が 10 の Object 型配列が使用されていました。JDK 8 以降では、インスタンス ...
5月12日 19:36 投稿