Java 我尝试使用Set.remove(null)从哈希集中删除null。但它实际上不起作用。我到底出了什么错。?
下面是我的代码。我试图从列表和集合中删除空引用。我仍然可以看到打印的哈希集中出现Null。我哪里会错呢Java 我尝试使用Set.remove(null)从哈希集中删除null。但它实际上不起作用。我到底出了什么错。?,java,list,null,hashset,Java,List,Null,Hashset,下面是我的代码。我试图从列表和集合中删除空引用。我仍然可以看到打印的哈希集中出现Null。我哪里会错呢 public boolean checkStickySession(Map<String,List<String>> map1){ List<String> sessionList = map1.get("sessionId"); sessionList.removeAll(Collections.single
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;
}
public boolean checkStickySession(映射映射1){
List sessionList=map1.get(“sessionId”);
removeAll(Collections.singleton(null));
Set sessionSet=新HashSet(sessionList);
布尔状态=假;
session.remove(null);
logger.info(“sessionstart::”+sessionstart);
if(sessionSet!=null&&sessionSet.size()=1){
状态=真;
}
返回状态;
}
您很可能拥有字符串“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;
List List=new ArrayList();
列表。添加(“空”);
list.add(空);
System.out.println(列表);//打印[空,空]
断言list.size()==2;
list.remove(空);
断言list.size()==1;
列表。删除(空);//无法以这种方式删除“null”。
断言list.size()==1;
System.out.println(列表);//打印[空]
列表。删除(“空”);
断言list.size()==0;
您很可能拥有字符串“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;
List List=new ArrayList();
列表。添加(“空”);
list.add(空);
System.out.println(列表);//打印[空,空]
断言list.size()==2;
list.remove(空);
断言list.size()==1;
列表。删除(空);//无法以这种方式删除“null”。
断言list.size()==1;
System.out.println(列表);//打印[空]
列表。删除(“空”);
断言list.size()==0;
两者都应从列表或集合中删除null
。你的问题应该在其他地方。我会做sessionList.remove(null)
,但这两种方法都可以。一旦从列表中删除了它,就不需要再从集合中删除它。sessionList.removeAll(Collections.singleton(null))代码>在我的测试中抛出一个NPE,这可能是你问题的一部分吗?为了安全起见。将其从列表和集合中删除。不,当我们有一些不可变的拷贝时,NPE就会出现。我不认为这里不是这样。我认为彼得·劳里是对的。我将尝试一下。两者都应该从列表
或集合
中删除null
。你的问题应该在其他地方。我会做sessionList.remove(null)
,但这两种方法都可以。一旦从列表中删除了它,就不需要再从集合中删除它。sessionList.removeAll(Collections.singleton(null))代码>在我的测试中抛出一个NPE,这可能是你问题的一部分吗?为了安全起见。将其从列表和集合中删除。不,当我们有一些不可变的拷贝时,NPE就会出现。我不认为这里不是这样。我认为彼得·劳里是对的。我试试看。你的答案对我来说似乎有效。我会试一试,让你知道:)你的答案对我来说是有效的。我会尝试一下,让你知道:)