2013-04-13 14 views
6

私のJavaプログラムでは、数回(約20秒)かかるので、私は奇妙に思えます。ここでhashmapに追加すると長い時間がかかります

はライン

次のように定義RES
Map<URL, Integer> res2 = new HashMap<>(); 
for (URL url : res) { 
    res2.put(url, null); 
} 

です:

List<URL> res = new ArrayList<>(); 

を私のプログラムでは、res.size()〜= 1500

あなたは、任意のアイデアを持っていますか私の問題はどこから来るのだろうか?

ありがとうございます!

+0

が適切にあなたのハッシュマップのサイズを設定してみてください。

はここにいくつかの背景です。新しいHashMap(1500); –

+0

各キーに対してNULL値を挿入するときにマップが必要なのはなぜですか? –

答えて

14

hashCode()の方法java.net.URLは、DNS解決を実行します。 URLクラスはHashSetで、またはHashMapのキーとして使用するには不適切です。文字列またはjava.net.URIのいずれかを使用します。 (RobAuがこの回答にコメントでリンク)

  • Michael Scharf: java.net.URL.equals and hashCode make (blocking) Internet connections....
  • Eishay Smith: Java's URL little secret

  • +1

    こちらも参照してください。http://www.eishay.com/2008/04/javas-url-little-secret.html – RobAu

    +0

    恐ろしい、感謝します:) – Nisalon

    関連する問題