是否可以这样做?如果是,那么所需的语法/方法是什么?
我通过使用尝试过
System.out.println(key+"="+HM.get(key));
但是它以这种格式打印
key =值
我需要
key = value
(由于在HackerRank中输出格式)
while(sc.hasNextLine())
{
String s=sc.nextLine();
if(a.containsKey(s))
{
System.out.println(s+"="+a.get(s));
}
else
System.out.println("Not found");
}
编辑1: 我看到了给出的解决方案,该人员使用了以下代码,
while(scan.hasNext()){
String s = scan.next();
Integer phoneNumber = phoneBook.get(s);
System.out.println(
(phoneNumber != null)
? s + "=" + phoneNumber
: "Not found"
);
}
现在,为什么答案中没有空格?
我看到的唯一可见变化是此人使用的是对象而不是原始数据类型。
此外,此人在接受电话号码时使用int而不是字符串,我最初是这样做的,但它给了我InputMismatchException。
答案 0 :(得分:0)
如果有任何键或值可用,Whois中没有可用的方法从地图获取Entity。如果有帮助,请尝试以下代码:
rawTimestamp
答案 1 :(得分:0)
您可以使用entrySet()
(请参阅entrySet)遍历地图。
然后,您将可以访问Map Entry,其中包含方法getValue()
和getKey()
来检索映射对象的值和键。
entrySet()
返回一个Set
,并且Set
扩展了Collection
,它提供了stream()
方法,因此您可以使用流来循环和处理您的entrySet:
map
.entrySet() // get a Set of Entries of your map
.stream() // get Set as Stream
.forEach( // loop over Set
entry -> // lambda as looping over set entries implicitly returns an Entry
System.out.println(
entry.getKey() // get the key
+ "="
+ entry.getValue() // get the value
);
如果需要,您可以添加.filter()
以仅处理流中符合条件的元素。
工作示例 here
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> myMap = new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
for (int i = 1 ; i < 10 ; i++) {
put("key"+i, "value"+i);
}
}
};
myMap.entrySet().stream().forEach(
entry -> System.out.println(entry.getKey() + "=" + entry.getValue())
);
}
}
输出:
key1=value1
key2=value2
key5=value5
key6=value6
key3=value3
key4=value4
key9=value9
key7=value7
key8=value8