【发布时间】:2017-12-04 15:12:33
【问题描述】:
首先,我对 Java 还很陌生,我解决问题的方法可能不是最佳的。
我有一些字符串列表,例如 {"a", "b", "e", "g"} 和 {"no", "a", "g", "great"},它们包含 4 个项目,每个项目来自一组值。
我想创建该集合的Hashtable,分配一个int 值给每个String。对于特定的String,我想使用 lambda 表达式 基于 其他项目不同的值 /strong> 在它包含的列表中,类似于:
class bla {
static Map stuff;
static {
// If I write it like this, I get the error "Cannot resolve method ContainsAll"
stuff.put("g", (aList) -> (aList.containsAll(Arrays.asList("a", "b", "e", "g")) ? 1 : 2));
}
}
如果我像这样将List<String> 添加到(aList),(List <String> aList) 那么我得到一个“lambda 表达式的目标类型必须是一个接口”错误。
如果我将 () 替换为 lambda 主体的 {},我会收到“;预期错误”。
我怎样才能写这个工作?或者,您有更好的主意吗?
【问题讨论】:
-
您似乎在尝试随机的事情,而不是阅读您正在使用的类的 javadoc。第一个提示:JDK 中没有任何方法以大写字母开头。
-
^ 你几乎肯定不需要 lambda 来做你想做的事。
-
另外,不要使用原始类型。你想要一个 Map
。不是地图。 -
"
if i write it like this, i get the error Cannot resolve method ContainsAll" 根据Java Naming Conventions 方法名称以小写字母开头... -
您到底想达到什么目的?我不知道你想要映射什么,是什么决定了
int值?似乎您在基础知识而不是您的具体问题上更加挣扎。在尝试解决问题之前,也许您应该先阅读一些关于这些事情如何工作的教程。然后您可能会理解为什么编译器会抱怨。以及如何将代码重写为更合适的格式。
标签: java arraylist lambda hashmap hashtable