Java-汎型の理解

1631 ワード

CS 61 Bのhomework 6をして、一つの問題に出会いました。無視したいですが、聞いてみたら、大きな問題です。前提:私は今size=100のハッシュ表を作りたいです。中にLinkedListを入れて、それからチェーンごとに衝突が発生したのをインストールします。Keyは同じ種類のEntryです。
hashTable=new Linked List[size Estimate]間違いです。ただし、hashTable=(Linked List[])new Linked List[size Estimate];このように書けばいいです。その中には汎型の問題が含まれています。前にも多かれ少なかれ会ったことがあります。よく調べたところ、いくつかの収穫がありました。全体的には次の通りです。Javaの配列は、それが持つ正確なタイプを知っていなければならない。しかし、一般型に対しては、プログラムはその特定のパラメータタイプを取得できません。すなわち、**配列は具体化されており、汎型は運行時に消去されている。この文の意味は、配列は運行時に配列要素のタイプの制約を判断するということです。汎型は正反対で、運行時には汎型の情報は消去されます。コンパイル時にのみタイプを強化することができます。だから配列と泛型は水と火の相容れないものです。この問題には何か解決方法がありますか?方法の一つはCastを使うことです。私が言ったように。でも、悪いところもあります。強制変換はプログラムによく影響しません。具体的にどこが悪いのか分かりません。おじいさんがそう言いました。そう言いましょう。方法二:ArayListを用いて問題を解決する。まず、ArayList。今の私の理解。彼はListであり、Listのインターフェースを実現したが、同時にいくつかのArayの特徴を持っている。例えば、
ArrayList a = new ArrayList>();
for (int i = 0; i < 100; i++)
        a.add(new LinkedList());
等価:
hashTable = new LinkedList[100]; //ILLEGAL!!    
そして、ハッシュ値87に要素を挿入する必要がある場合、
(a.get(87)).add(new Entry());
そして,この複雑さはO(1)のみであり,つまり,配列の特徴を基本的に実現し,定数時間内の高速位置決めが可能である。操作を実現します。また、このArayListはサイズを動的に変えることができる。本質はListですが、同時にListの属性を持っています。例えば、remove()などは、線形です。時間があれば、ソースコードをよく調べてください。
たくさん作りますね。一番オススメの汎型の文章です。http://zddava.iteye.com/blog/352850
次のいくつかも悪くないです。http://m.blog.csdn.net/blog/bhq2010/12653797 http://www.ibm.com/developerworks/cn/java/j-jtp01255.html http://blog.csdn.net/eric_sunah/articale/detail/7262486
*まとめ:Java泛型、ArayList**
今日は妹のTOEFL試験があります。92.Anyway、Good luck、Richardoに行ってほしいです。