我有一个HashMap:

private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();

现在我想要遍历所有的值并打印它们.

我写道:

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

它似乎不起作用.

有什么问题吗?

编辑: 另一个问题:这个集合是从零开始的吗?我的意思是,如果它有1个键和值,大小是0还是1?

推荐答案

keySet()只返回哈希映射中的一组键,您应该迭代该键集,并使用这些键从哈希映射中获取值.

在您的示例中,散列映射键的类型是TypeKey,但是您在泛型for-loop中指定了TypeValue,因此无法编译它.您应该将其更改为:

for (TypeKey name: example.keySet()) {
    String key = name.toString();
    String value = example.get(name).toString();
    System.out.println(key + " " + value);
}

Update for Java8:

example.entrySet().forEach(entry -> {
    System.out.println(entry.getKey() + " " + entry.getValue());
});

如果不需要打印键值,只需要哈希映射值,可以使用其他人的建议.

另一个问题:这个集合是零基数的吗?我的意思是,如果它有一个键和值,它的大小是0还是1?

keySet()返回的集合是Set.使用索引无法从集合中获取值,因此这不是基于零还是基于一的问题.如果哈希映射有一个键,返回的keySet()将有一个条目,其大小将为1.

Java相关问答推荐

[145007:JC_ILLEGAL_SYMBOL_CHARACTER保存时:griddb中的牧师

如果您仅同步写操作,Java布尔线程是否安全

如何专门保存数据而不显示在jTable中?

是否有一种格式模式,可以在除0之外的数字前面有正负符号?

Java中不同包中的类之间的配置共享

inteliJ中是否有一个功能可以自动在块注释中的/*后面添加一个空格?''

JVM会优化这个数学运算吗?

现场观看Android Studio中的变化

如何使用AWS CLI从S3存储桶中的所有对象中删除用户定义的元数据?

所有 case 一起输入时输出错误,而单独放置时输出正确

获取字符串中带空格的数字和Java中的字符

Mapstruct不能正确/完全映射属性

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

与不同顺序的组进行匹配,不重复组但分开

格式中的特定回录键-值对

使用While循环打印素数,无法正常工作

try 使用类来包含JSON响应

Java 17与Java 8双重表示法

始终使用Spring Boot连接mongodb上的测试数据库

在JSON上获取反斜杠