Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我尝试使用Set.remove(null)从哈希集中删除null。但它实际上不起作用。我到底出了什么错。?_Java_List_Null_Hashset - Fatal编程技术网

Java 我尝试使用Set.remove(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

下面是我的代码。我试图从列表和集合中删除空引用。我仍然可以看到打印的哈希集中出现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;
        }
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就会出现。我不认为这里不是这样。我认为彼得·劳里是对的。我试试看。你的答案对我来说似乎有效。我会试一试,让你知道:)你的答案对我来说是有效的。我会尝试一下,让你知道:)