class NameValueObj{
String name;
String value;
}
List<NameValueObj> merge(List<NameValueObj> list1, List<NameValueObj> list2){
// I want to merge two list here
}
private List<Header> mergeHeaders(List<Header> defHeaders, List<Header> ovrdHeaders) {
List<Header> lFinal = defHeaders;
boolean foundMatch = false;
for (Header ovrdHeader : ovrdHeaders) {
foundMatch = false;
for (Header defHeader : defHeaders) {
if (defHeader.getName().equalsIgnoreCase(ovrdHeader.getName())) {
defHeader.setValue(ovrdHeader.getValue());
foundMatch = true;
break;
}
}
if(!foundMatch) {
lFinal.add(ovrdHeader);
}
}
return lFinal;
}
您的算法是O(n*n)
(二次型)。
您可以使用临时的LinkedHashMap
,在O(n)
(lineal)中完成:
private List<Header> mergeHeaders(final List<Header> defHeaders, final List<Header> ovrdHeaders) {
final Map<String, Header> headersMap = new LinkedHashMap<String, Header>();
for (final Header defHeader : defHeaders) {
headersMap.put(defHeader.getName().toLowerCase(), defHeader);
}
for (final Header ovrdHeader : ovrdHeaders) {
headersMap.put(ovrdHeader.getName().toLowerCase(), ovrdHeader);
}
return new ArrayList<Header>(headersMap.values());
}
请注意,该行为与您的实现的行为并不完全相同。不同之处在于:
defHeaders.clear();
defHeaders.addAll(headersMap.values());
return defHeaders;
问题内容: 我有两个列表 , 都包含 MyData 类型的对象,而 MyData* 包含这些变量。 利斯塔和数组listB都包含MyData的对象,现在我要两个列表的对象值比较这里 的名字 ,以及 检查 变量一样,如果 利斯塔 包含这些对象值 和ListB也包含 然后我必须比较列表并返回false,因为两个列表相同但是如果ListA包含 和 ListB 包含 然后我必须比较列表并返回true,因为
我有两个列表*
问题内容: 尝试查看是否有任何JavaScript库功能可以合并两个json对象的特定键的值 使用$ .extend和$ .merge给出以下结果 我正在寻找的是 问题答案: 您想深入扩展
我有两个对象可以一个字段一个字段地比较,对函数列表中的每个字段使用不同的函数。
问题内容: 我有两个从同一类实例化的java对象。 如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同 但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。 如何比较这两个对象以验证它们是否相同? 问题答案: 你需要提供自己的实现。 如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来:
问题内容: 我有两个像这样的对象数组: 我想知道数组是否相等。我定义的是相等的,因为array1中的每个值都与array2中该位置的值相同。因此,这两个数组将相等。 为什么最好找出这两个数组是否相等? 不是一个很深的等式,所以它是行不通的,我不知道是否遍历每个元素并进行比较是解决此问题的最佳,最有效的方法。有没有人有更好的建议? 编辑:我需要一个可以放入嵌套数组的等于。 问题答案: 使用。这项功能