Tweet | |
橋本, 肥後, 楠本, "イミュータブルクラスを利用する必要性に関する調査 ~ハッシュ値を利用するデータ型を対象として~," 電子情報通信学会技術報告, 122(138), pp. 61-66, 2022年7月. | |
ID | 763 |
分類 | 研究会・全国大会等 |
タグ | |
表題 (title) |
イミュータブルクラスを利用する必要性に関する調査 ~ハッシュ値を利用するデータ型を対象として~ |
表題 (英文) |
|
著者名 (author) |
橋本 周,肥後 芳樹,楠本 真二 |
英文著者名 (author) |
Shu Hashimoto,Yoshiki Higo,Shinji Kusumoto |
キー (key) |
Shu Hashimoto,Yoshiki Higo,Shinji Kusumoto |
定期刊行物名 (journal) |
電子情報通信学会技術報告 |
定期刊行物名 (英文) |
|
巻数 (volume) |
122 |
号数 (number) |
138 |
ページ範囲 (pages) |
61-66 |
刊行月 (month) |
7 |
出版年 (year) |
2022 |
Impact Factor (JCR) |
|
URL |
|
付加情報 (note) |
|
注釈 (annote) |
pp.5に誤植あり (誤)HashMap のキーのみに使用された イミュータブルクラス 48 件,HashSet の要素のみに使用された イミュータブルクラス 39 件,HashMap のキーと HashSet の要素の双方に使用されたイミュータブルクラス 14 件,計 101 件の イミュータブルクラスを調査した. (正)HashMap のキーのみに使用された イミュータブルクラス 48 件,HashSet の要素のみに使用された イミュータブルクラス 42 件,HashMap のキーと HashSet の要素の双方に使用されたイミュータブルクラス 11 件,計 101 件の イミュータブルクラスを調査した. |
内容梗概 (abstract) |
Javaには複数のオブジェクトを格納するためのさまざまなデータ型が用意されている.その中に,HashMapやHashSetのように格納するオブジェクトのハッシュ値を利用するデータ型がある.このようなハッシュ値を利用するデータ型は,オブジェクトを格納する際にそのオブジェクトのハッシュ値をデータ型の内部に記録する.そのため,格納されたオブジェクトに変更が加わりハッシュ値が変化してしまった場合に,変更後のハッシュ値とデータ型に記録されたハッシュ値との間で不整合が生じてしまう.そこで,このようなハッシュ値を用いるデータ型に格納するオブジェクトのクラスにはその内部状態が生成後に変化しないイミュータブルクラスが推奨されている.しかし,イミュータブルクラスの利用により,ハッシュ値との不整合がどの程度防げているのかについてはこれまで明らかにされてこなかった.そこで本研究では,Javaの実プロジェクトにおいてハッシュ値を利用するHashMapとHashSetを対象とした調査を行い,データ型に格納するオブジェクトはイミュータブルクラスにすべきかを明らかにする.HashMapおよびHashSetに格納された対象プロジェクト内で定義されたクラスを利用していたオブジェクトを対象に,そのクラスがイミュータブルであるか否かの調査を行った.調査の結果,イミュータブルクラスはHashMapでは14.8%,HashSetでは9.7%利用されていると明らかになった.また,過去バージョンではミュータブルクラスであったが,不整合のバグが発生したためにイミュータブルに変更された事例はまったく見つからなかった. |
論文電子ファイル | shu-hsmt_202207_sigss.pdf (application/pdf) [一般閲覧可] |
BiBTeXエントリ |
@article{id763, title = {イミュータブルクラスを利用する必要性に関する調査 ~ハッシュ値を利用するデータ型を対象として~}, author = {橋本 周 and 肥後 芳樹 and 楠本 真二}, journal = {電子情報通信学会技術報告}, volume = {122}, number = {138}, pages = {61-66}, month = {7}, year = {2022}, annote = {pp.5に誤植あり (誤)HashMap のキーのみに使用された イミュータブルクラス 48 件,HashSet の要素のみに使用された イミュータブルクラス 39 件,HashMap のキーと HashSet の要素の双方に使用されたイミュータブルクラス 14 件,計 101 件の イミュータブルクラスを調査した. (正)HashMap のキーのみに使用された イミュータブルクラス 48 件,HashSet の要素のみに使用された イミュータブルクラス 42 件,HashMap のキーと HashSet の要素の双方に使用されたイミュータブルクラス 11 件,計 101 件の イミュータブルクラスを調査した. }, } |