Java Hashmap-键:字符串,值:布尔值。如何测试if语句中的值? /public void getfinishedbook(HashMap库){ if(library.size()

Java Hashmap-键:字符串,值:布尔值。如何测试if语句中的值? /public void getfinishedbook(HashMap库){ if(library.size(),java,Java,如果数据类型Boolean的Hashmap'value'等于try,我希望底部的IF语句运行。我已经尝试了.get(),但这不起作用。使用下面的代码,它会起作用 / public void getFinishedBooks(HashMap<String, Boolean> library) { if (library.size() < 1) { System.out.println("No books in Library"); } else { for (St

如果数据类型Boolean的Hashmap'value'等于try,我希望底部的IF语句运行。我已经尝试了.get(),但这不起作用。

使用下面的代码,它会起作用

/ public void getFinishedBooks(HashMap<String, Boolean> library) {

if (library.size() < 1) {

  System.out.println("No books in Library");

} else {

  for (String books : library.keySet()) {

    **if (library.value == true) {**

与其获取键集,不如获取条目集-这意味着您可以迭代键/值对,而不必再次查找每个键。例如,要打印所有具有
true
值的书籍:

    for (String books : library.keySet()) {
        if(books != null){
        Boolean libValue = library.get(books );
        if (libValuetrue) {
            //added as per your code
        }

        }
    }
for(Map.Entry:Map.entrySet()){
if(entry.getValue()){
System.out.println(entry.getKey());
}
}
或者,如果值可能为空,则处理空值:

for (Map.Entry<String, Boolean> entry : map.entrySet()) {
    if (entry.getValue()) {
        System.out.println(entry.getKey());
    }
}
for(Map.Entry:Map.entrySet()){
if(TRUE.equals(entry.getValue()){
System.out.println(entry.getKey());
}
}
或者

if (library.isEmpty()) {
    System.out.println("No books in Library");
} else {
    for (String books : library.keySet()) {
         if (library.get(books)) {
for(条目:library.entrySet()){
if(entry.getValue()){
但是,使用
集合
会更为理想

Set library=newhashset();
if(library.contains(…))

“我试过了.get(),但没用。”那么你到底试过什么?大概你对
书籍
键相关的值感兴趣……所以无论你做什么,你都需要使用它。(或者,你可以迭代
入口集
,而不是
键集
。)您是如何尝试使用
.get()
如果(library.get(books))
可以正常工作的。或者您是否尝试使用了书籍上的get?(这是一个用作键的书籍字符串,而不是地图)是的,您应该学习如何使用
get()
,然后尝试理解为什么您最好使用
entrySet()
然后开始工作。谢谢Tezra,我错过了作为参数的书籍。get。我正在学习,正如你可能猜到的:)@StephenBrown没关系。这就是为什么在将来,你会包括你尝试过的内容和失败的原因,以便我们知道你做错了什么,(并给你正确的答案)hashmap是。
String libValue=library.get(books);
是一个类型未匹配编译器错误。将
boolean
boolean
进行比较以获得
boolean
结果,如
if(libValue==true)
,是冗余的重复和多余的。答案缺少对书籍空值的处理。@Markus添加了空条件传感器,我的意思是libValue需要检查空值,这是我的错。否则if将抛出NPE。
if (library.isEmpty()) {
    System.out.println("No books in Library");
} else {
    for (String books : library.keySet()) {
         if (library.get(books)) {
    for (Entry<String, Boolean> entry : library.entrySet()) {
         if (entry.getValue()) {
Set<String> library = new HashSet<>();

if (library.contains(...))