2017-08-01 2 views
0

変更されたリンクされたハッシュマップを同時に読み取ることができません。どのように私は別の方法で同じ仕事をすることができます!私がやりたいことは、この種のものです!LinkedHashMapを使用して同時に書き込みおよび読み取りを行う方法

while(flag) 
    for(String key:hashMap.keySet()) 
    { 

     if(hashMap.get(key)==false) 
     { 
      hashMap.put(key,true); 
      System.out.println(key+"\t\t\t:PACKAGE"); 
      String query="select REFERENCED_NAME from ALL_DEPENDENCIES where OWNER='xyz' AND REFERENCED_OWNER='xyz' AND NAME='"+key+"' AND TYPE='PACKAGE BODY' AND REFERENCED_TYPE='PACKAGE' AND REFERENCED_NAME<>'"+key+"'"; 
      ResultSet rs=statement.executeQuery(query); 
      while(rs.next()&&(rs.getString(1)!=key)) 
      { 

       if((hashMap.get(rs.getString(1)) ==null) || !(hashMap.get(rs.getString(1))== true)){ 
        hashMap.put(rs.getString(1),false); 
        System.out.println(rs.getString(1)); 
       } 
      } 
      //System.out.println("NEW :"+key); 


      rs.close(); 
     } 
    } 

    flag=hashMap.containsValue(false); 
    } 
+0

'hashSet'を' keySet() 'が反復に使用されているように、その場で変更しています。 Javaはこれを許可しません。同様のことをしたいのであれば、一時的な 'hashmap'を作成し、' keySet() 'を繰り返してループ内の元のハッシュマップを修正してみてください。 –

+0

残念ながら、ハッシュマップキーを反復しながら変更することはできません。変更のために一時的なリストやハッシュマップを使うことを考えましたか? –

+0

はConcurrentHashMapを使用しています。 –

答えて

0

コンカレントハッシュマップを使用していますが、問題は解決しました。

関連する問題