• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HashSetのremoveで例外発生します)

HashSetのremoveで例外発生します

askaaskaの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

このコードでは判断できないわね。 ここに記述している以外の要素がかかわっているんじゃないかしら。

kahotaka
質問者

お礼

回答ありがとうございます。 このコードを追記する前は問題なく動いていたのと、ログを見るとこの処理のところで エラー発生しているようでしたので。。。 コレクションのremoveを実施しているのはここだけのはずなのですが… もう少しソースチェックもしてみます。

関連するQ&A

  • Listからのnull要素を削除方法は?

    次のリストに入っているnull要素を削除する方法をお教え下さい。  List<String> lst = new ArrayList<String>(); while (lst.remove(null)); や for (int i=0; i < lst.size();i++) {  if (lst.get(i) == null ) lst.remove(i); } ではException in thread "main" java.lang.UnsupportedOperationException が起こります。 2011 Nov. 27.

    • ベストアンサー
    • Java
  • 反復的削除時に発生するConcurrentModificationExceptionのスマートな回避

    次のコードのように反復中にそのコレクションを削除しようとすると、ConcurrentModificationExceptionが発生してしまいます。 Set<Integer> set = new HashSet<Integer>(); for (int i = 0 ; i < 10 ; i++) {  set.add(i); } // このループで例外発生 for (Integer currValue : set) {  if (currValue % 2 == 0) {   set.remove(currValue);  } } for (Integer currValue : set) {  System.out.println(currValue + " "); } これを回避するために、反復中に削除せず、削除対象をまず保持しておき、その後でまとめて削除するという方法です。 Set<Integer> set = new HashSet<Integer>(); Set<Integer> removeReserve = new HashSet<Integer>(); for (int i = 0 ; i < 10 ; i++) {  set.add(i); } for (Integer currValue : set) {  if (currValue % 2 == 0) {   removeReserve.add(currValue);  } } for (Integer currValue : removeReserve) {  set.remove(currValue); } for (Integer currValue : set) {  System.out.println(currValue + " "); } しかしこの方法だと、ループがもう一度増えてしまい、なんだか気持ちよくありません。 そこで、もしももっとよい解決策の考え方があれば、教えて頂きたいのです。 「この方法以外ないと思う」という意見もほしいです。 その場合は、上記の解決策にしようと思います。

    • ベストアンサー
    • Java
  • Generics extends ObjectとObjectの違い

    初めて質問させていただきます。 Generics(extendsの?)の考え方についてです。 例えば、下記のような関数を作成したとします。 ======================================= public static String getHoge(Map<String , ? extends Object> checkMap){   Set<Map.Entry<String, Object>> checkMapKeySet = checkMap.entrySet();   ~ 処理 ~ } ======================================= 2行目で「型の不一致: Set<Map.Entry<String,capture#3-of ? extends Object>> から Set<Map.Entry<String,Object>> には変換できません。」とコンパイラから怒られます。 では、Objectの派生クラスをObjectとして扱えないのかと単純に理解しようとすると、以下のコードは普通にコンパイルできてしまいます。 ======================================= public static String getHoge(Map<String , ? extends Object> checkMap){   for(Map.Entry<String, ? extends Object> checkMapEntry : checkMap.entrySet()){     Object obj = checkMap.get("aa");     ~ 処理 ~   } } ======================================= 最初のコードがエラーになるなら、2つ目のコードの3行目(Object obj =の行)が何故エラーにならないのか、その違いをどのように解釈していいのか悩んでいます。 ご存じの方がいらっしゃいましたら、アドバイスでもいただけると幸いです。

    • ベストアンサー
    • Java
  • getStringの値がNULLの時の処理

    DB:SQL Server 2005 JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。 外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。 回避策はあるのでしょうか? 抜粋したソースを下記に記します。 -- test.jsp -- <% ResultSet rs = db.executeQuery(sql); while(rs.next()){ String disp_object = rs.getString("object"); if(disp_object == null) disp_object="---"; } %> <tr>Object</tr> <tr><%=disp_object%></tr>

    • ベストアンサー
    • Java
  • arraylist 二次元配列

    こんにちは 今アレイリストの二次元配列を学習しています DBからデータを取得で表示したいと思っています そこでfor文の拡張とつかうとうまくいうのですが 普通に記述するとうまくいきません 拡張FOR 文を使うのは初めてなので 何が違うかアドバイスお願いします コンパイルできません↓ if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ ArrayList<ArrayList> hai = new ArrayList<ArrayList>(); ArrayList list = (ArrayList)request.getAttribute("list"); if (list != null) { hai.add(list); } ArrayList list1 = (ArrayList)request.getAttribute("list1"); if (list1 != null) { hai.add(list1); } ArrayList list2 = (ArrayList)request.getAttribute("list2"); if (list2 != null) { hai.add(list2); } for (int i = 0; i < hai.get(0).size(); i++) { %> <table border="3"> <tr> <% for (int k = 0 ; k <= hai.size(); k++) { %> <td width="60"> <% out.print(hai.get(i)); } %> コンパイルOK 表示できています <% if(request.getAttribute("list")!=null || request.getAttribute("list1")!=null || request.getAttribute("list2")!=null){ ArrayList<ArrayList> hai = new ArrayList<ArrayList>(); ArrayList list = (ArrayList)request.getAttribute("list"); if (list != null) { hai.add(list); } ArrayList list1 = (ArrayList)request.getAttribute("list1"); if (list1 != null) { hai.add(list1); } ArrayList list2 = (ArrayList)request.getAttribute("list2"); if (list2 != null) { hai.add(list2); } for (int i = 0; i < hai.get(0).size(); i++) { %> <table border="3"> <tr> <% for (ArrayList list4 : hai) { %> <td width="60"> <% out.print(list4.get(i)); } %> <br> </tr> </table> <% 上のソースの エラーメッセージ 2013/04/16 9:24:12 org.apache.catalina.core.ApplicationDispatcher invoke 致命的: サーブレット jsp のServlet.service()が例外を投げました java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 よろしくお願いします

    • ベストアンサー
    • Java
  • Listのiteratorインターフェースについて

    Listのiteratorインターフェースについて教えてください。 ABCD EFGH NULL IJKL (cont) というような配列を持ったオブジェクトの各要素を順に読み、もし、その要素が'NULL'という文字列を持っていたらスペースに置き換えたいののですが、方法がわかなくて困っています。 Listのiteratorインターフェースに要素を追加したり、削除したりするメソッドがあることはわかったのですが、更新の方法はあるのでしょうか。 もし、あればそのメソッドを教えてください。

    • ベストアンサー
    • Java
  • Access VBAよりExcelのシート名を取得

    お世話になります。 Access2010 Windows7 Pro 以下のページを参考にしましたが、「実行時エラー3170 インストール可能なISAMドライバーが見つかりませんでした。」と表示されてしまいます。 http://www.accessclub.jp/bbs5/0005/vba1231.html Dim Db As DAO.Database Dim Tbl As DAO.TableDef Dim xlsFile As String xlsFile = "ファイルパス" Set Db = OpenDatabase(xlsFile, True, True, "Excel 14.0;") ←ここで止まる For Each Tbl In Db.TableDefs If Right$(Tbl.Name, 1) = "$" Or _ Right$(Tbl.Name, 2) = "$'" Then 'シート名の最後は必ず$が付きます Debug.Print Tbl.Name End If Next Tbl Db.Close Set Db = Nothing なお、参照設定にて「Microsoft DAO 3.6 Object Library」にチェックが入っていないことが原因かと思い、チェックを入れようとしましたが「この名前は既にあるモジュール、プロジェクト、オブジェクトライブラリで使われています。」というメッセージが表示され、チェックを入れることができません。 勉強不足で大変恐縮ですが、これらのメッセージからどういうことが分かりますでしょうか。 ご教授の程、宜しくお願い致します。

  • [object Object]となってしまう変数のチェックはどうやればいいですか?

    ある変数に、空のオブジェクトが入っているものを表示すると、 [object Object]となってしまいます。 なにかチェックする関数などあるのでしょうか? とりあえずこういったチェックをしてますが、スマートだとは思わないのです。 if ( '[object Object]' == siteData["description"]){ test = "no description"; }else{ test = siteData["description"]["short"]; } ご教示お願いします。

  • 配列の中身を全て順番に別の関数へ引数として渡すには

    配列の中身を全て順番に別の関数へ引数として渡すには、どうすればよいでしょうか? このままだと、'null' は Null またはオブジェクトではありません。 となります。 function piyo(hoge){ alert(hoge); } for (var i = 0; i < hogearray.length; i ++) { piyo(hogearray[i]);//ここを通ったら、順番の関数を呼び出すようにしたい } また、グローバル変数として渡すには、どうすればよいでしょうか?

  • エクセルVBAで、IEからコピーするには

    エクセル2000,win2000,IE6です。 次のような、コードを書きました。 Sub t03ccc() Dim objIE As Object 'IE オブジェクト参照用 Dim objShell As Object 'Shell オブジェクト参照用 Dim objWindow As Object 'Window オブジェクト参照用 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows '起動中のタイトルを探して。 If Left(objWindow.document.Title, 7) = "Office系" Then Set objIE = objWindow 'オブジェクトを代入 Msg = "Office系" Exit For End If Next If Msg <> "Office系" Then MsgBox "・・・スクリーニング結果一覧・・・がありません" Exit Sub End If objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択 objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー Sheets("Sheet3").Select Rows("1:200").ClearContents Range("A1").Select ActiveSheet.Paste '''' objIE.Quit Set objIE = Nothing Set objShell = Nothing Set objWindow = Nothing End Sub これで、エクセルとIEしか開いてないときは巧くいくのですが、 エクスプローラーを同時に開くと実行時エラー438が出ます。 よろしくお願いします。