在标准Java库中,查找两个列表是否包含完全相同的元素的最简单方法是什么?
如果两个列表是相同的实例,则无关紧要,如果列表的类型参数不同则无关紧要.
例如
List list1
List<String> list2;
// ... construct etc
list1.add("A");
list2.add("A");
// the function, given these two lists, should return true
Run Code Online (Sandbox Code Playgroud)
我知道可能有些东西盯着我:-)
编辑:为了澄清,我正在按顺序寻找完全相同的元素和元素数量.
编辑:谢谢你指出我看不见的明显答案:-)
虽然到目前为止给出的所有答案都是正确的,但有些答案比其他答案更正确,所以在接受之前我会等待一段时间以获得最好的四舍五入的答案.
在我的类的equals()方法中,我使用私有实例HashMap变量来比较相等性.但是,在比较它们的HashMap变量时,2个不同的对象仍然显示相等.进一步的研究将我带到了链接:链接在这里.但是,它只是说HashMap1.equals(HashMap2)无法工作的原因是因为"如果不编写自定义代码,就无法对Java的数组进行相同的测试."
我不明白这个原因.任何人都可以指导我一个精心设计的原因吗?
给定一个只有关键字键的嵌套映射{:foo {:bar 1 :baz [2 3] :qux {:quux 4}} :corge 5},如何实现,flatten-map以便(flatten-map {:foo {:bar 1 :baz [2 3] :qux {:quux 4}} :corge 5} "-")产生类似的东西{:foo-bar 1 :foo-baz [2 3] :foo-qux-quux 4 :corge 5}.
我最好的尝试是:
(defn flatten-map
([form separator] (flatten-map form separator nil))
([form separator prefix]
(if (map? form)
(into {} (map (fn [[k v]]
[(keyword (str prefix (name k)))
(flatten-map v separator (str prefix (name k) separator))])
form))
form)))
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我不能flatten-map只选择"叶子".
我正在使用Java 8功能比较2个地图,并根据条件想要返回结果.使用.forEach显示编译时错误,基本上,返回是从Lambda表达式返回而不是从循环返回.如何从包围lambda的循环返回?
请注意,我没有比较两个地图对象的相等性
nMap.forEach((k,v) -> {
if (!mMap.containsKey(k) || mMap.get(k) < v) {
return -1;
}
});
Run Code Online (Sandbox Code Playgroud) java ×3
clojure ×1
collections ×1
equals ×1
foreach ×1
hashmap ×1
java-8 ×1
java-stream ×1
lambda ×1