前提・実現したいこと
以下のメッセージはどういう意味でしょうか?詳細はどうのように確認することができますか?
発生している問題・エラーメッセージ
注意:HashTable.javaの操作は、未チェックまたは安全ではありません。 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。
HashTable
Java
1import java.util.List; 2import java.util.LinkedList; 3import java.util.Arrays; 4 5 6public class HashTable<K, V> { 7 8 private Object[] entries; 9 10 private List<HashTableEntry<K, V>> bucket(int i) { 11 return (List<HashTableEntry<K, V>>)entries[i]; 12 } 13 14 public HashTable(int numBuckets) { 15 if (numBuckets < 1) 16 throw new IllegalArgumentException("hash table must have at least one bucket"); 17 this.entries = new Object[numBuckets]; 18 for (int i = 0; i < numBuckets; i++) 19 this.entries[i] = new LinkedList<HashTableEntry<K, V>>(); 20 } 21 22 public void put(K key, V value) { 23 HashTableEntry<K, V> e = new HashTableEntry<K, V>(key, value); 24 int h = e.getHashCode(); 25 int b = Math.abs(h % this.entries.length); 26 bucket(b).add(e); 27 } 28 29 public V get(K key) { 30 int h = key.hashCode(); 31 int b = Math.abs(h % this.entries.length); 32 for (HashTableEntry<K, V> e : bucket(b)) 33 if (key.equals(e.getKey())) 34 return e.getValue(); 35 return null; 36 } 37 38 public boolean includesKey(K key) { 39 int h = key.hashCode(); 40 int b = Math.abs(h % this.entries.length); 41 for (HashTableEntry<K, V> e : bucket(b)) 42 if (key.equals(e.getKey())) 43 return true; 44 return false; 45 } 46 47 public boolean includesValue(V value) { 48 int h = value.hashCode(); 49 int b = Math.abs(h % this.entries.length); 50 for (HashTableEntry<K, V> e : bucket(b)) 51 if (value.equals(e.getValue())) 52 return true; 53 return false; 54 } 55 56 public List<K> keys() { 57 List<K> klist = new LinkedList<K>(); 58 for (int i = 0; i < this.entries.length; i++) { 59 klist = (List<K>)entries[i]; 60 } 61 return klist; 62 } 63 64 public List<V> values() { 65 List<V> vlist = new LinkedList<V>(); 66 for (int i = 0; i < this.entries.length; i++) { 67 vlist = (List<V>)entries[i]; 68 } 69 return vlist; 70 } 71 72 public double loadFactor() { 73 double sum = 0; 74 for (int i = 0; i < this.entries.length; i++) { 75 sum += bucket(i).size(); 76 } 77 return sum / this.entries.length; 78 } 79 80 public int numCollisions() { 81 int col = 0; 82 for (int i = 0; i < this.entries.length; i++) { 83 if (bucket(i).size() > 1) 84 col++; 85 } 86 return col; 87 } 88 89 public int numEmptyBuckets() { 90 int emp = 0; 91 for (int i = 0; i < this.entries.length; i++) { 92 if (bucket(i).isEmpty() == true) 93 emp++; 94 } 95 return emp; 96 } 97 98 public int maxBucket() { 99 int max = 0; 100 for (int i = 0; i < this.entries.length; i++) { 101 if (bucket(i).size() < bucket(i + 1).size()) { 102 max = bucket(i + 1).size(); 103 } else { 104 max = bucket(i).size(); 105 } 106 } 107 return max; 108 } 109 110 public static void main(String[] args) { 111 HashTable<String, Integer> tbl = new HashTable<String, Integer>(10); 112 tbl.put("A", 1); 113 tbl.put("C", 11); 114 tbl.put("B", 2); 115 System.out.println("A:" + tbl.get("A")); 116 System.out.println("C:" + tbl.get("C")); 117 System.out.println("B:" + tbl.get("B")); 118 } 119 120}
回答1件
あなたの回答
tips
プレビュー