【问题标题】:Collection : Undefined k,v in Map集合:地图中未定义的 k,v
【发布时间】:2015-04-26 13:19:15
【问题描述】:

我正在从这个site了解收藏

那家伙举的例子

import java.util.HashMap;
import java.util.Map;

public class MapTester {

public static void main(String[] args) {

// keys are Strings
// objects are also Strings
Map<String, String> map = new HashMap<>();
fillData(map);

// write to command line
map.forEach((k, v) -> System.out.printf("%s %s%n", k, v));

// add and remove from the map
map.put("iPhone", "Created by Apple");
map.remove("Android");

// write again to command line
map.forEach((k, v) -> System.out.printf("%s %s%n", k, v));

}

private static void fillData(Map<String, String> map) {
map.put("Android", "Mobile");
map.put("Eclipse IDE", "Java");
map.put("Eclipse RCP", "Java");
map.put("Git", "Version control system");

}

} 

虽然在上面的程序中我可以理解 k 和 v 变量未定义或本地不存在。

map.forEach((k, v) -> System.out.printf("%s %s%n", k, v));

并以同一行面临问题。

请帮我学习收藏。

【问题讨论】:

  • 您是否遇到编译错误?
  • 这段代码没有问题。唯一的问题是您的安装系统。检查您是否确实在使用 java 8 进行编译。
  • 您使用的是什么 IDE(看起来可能是 Eclipse)?什么版本的IDE?对于 Eclipse,您需要使用 4.4 (Luna) 才能获得 Java 8 支持。
  • 您可能使用的是旧版本的 Eclipse。

标签: java eclipse dictionary hashmap java-8


【解决方案1】:

更正项目属性Java Compiler

不起作用:

作品:

【讨论】:

  • +1 投票给你。虽然问题是我正在使用开普勒。但可能对某人配置谁将面临同样的问题有好处。
【解决方案2】:

它在我的系统上运行良好。你能检查一下你使用的是JDK8吗? JAVA 8 中引入了lamdas 支持。您可以使用java --version 测试java 版本。

【讨论】:

  • 添加了一个快照,包含 java 库 1.8
  • 可以肯定的是,您应该检查 javac (javac -version) 的版本,而不是 java。此外,获取版本的语法是一个破折号。
  • @bmesuere 又添加了一张快照
【解决方案3】:

这个问题的答案

您需要使用 4.4 (Luna) 才能获得 Java 8 支持。

可能对后来检查它的人有用。

谢谢@greg-449

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2020-06-11
    • 2014-01-17
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    相关资源
    最近更新 更多