2016-12-22 7 views
0

以下は私のコードです。私はListから、またSetからnull参照を削除しようとしました。それでもNullが印刷されたハッシュセットに登場するのを見ることができました。どこが間違っていますか?私は、Set.remove(null)を使ってHashsetからnullを削除しようとしました。しかし実際には働いていません。何が私はここで間違っている可能性がありますか?

public boolean checkStickySession(Map<String,List<String>> map1){ 
      List<String> sessionList = map1.get("sessionId"); 
      sessionList.removeAll(Collections.singleton(null)); 
      Set<String> sessionSet = new HashSet<String>(sessionList); 
      boolean status=false; 
      sessionSet.remove(null); 
      logger.info("sessionSet::"+sessionSet); 
      if(sessionSet != null && sessionSet.size()==1){ 
       status = true; 
      } 
      return status; 
     } 
+0

は、両方とも 'List'または' Set'のいずれかから 'null'を削除する必要があります。あなたの問題はどこかにあるはずです。 – SomeJavaGuy

+0

私は 'sessionList.remove(null)'を実行しますが、どちらの方法でも動作するはずです。リストから削除されたら、セットから削除する必要はありません。 –

+0

'sessionList.removeAll(Collections.singleton(null));'はテストでNPEをスローします。これは問題の一部になる可能性がありますか? –

答えて

3

ほとんどの場合、あなたは同じことを印刷しますが、同じ参照ではない文字列"null"を持っています。デバッガでコードをステップ実行すれば、その違いを見ることができます。

List<String> list = new ArrayList<>(); 
list.add("null"); 
list.add(null); 
System.out.println(list); // prints [null, null] 
assert list.size() == 2; 
list.remove(null); 
assert list.size() == 1; 

list.remove(null); // can't remove the "null" this way. 
assert list.size() == 1; 

System.out.println(list); // prints [null] 
list.remove("null"); 
assert list.size() == 0; 
+0

あなたの答えは私にとって有効です。私はそれを試して、あなたに知らせる:) –

+0

ありがとう:)それは働いた –

関連する問題