Java 如何比较两个列表字符串?
我对java非常陌生,我有两个Java 如何比较两个列表字符串?,java,Java,我对java非常陌生,我有两个列表。当我这样做时: list1.equals(list2) 正在给我false。即使清单是一样的 这是检查相等性的正确方法吗?您可以使用Apache的: 等质量论者 根据中的相等合同测试两个列表的值相等 List.equals(java.lang.Object) 当您无法扩展列表时,此方法对于实现列表非常有用 抽象列表。该方法使用集合实例来启用其他 集合类型以使用列表实现算法 相关文本(稍作解释,因为这是一种静态方法) 是: 比较两个列表对象是否相等。仅当且仅当
列表
。当我这样做时:
list1.equals(list2)
正在给我false
。即使清单是一样的
这是检查相等性的正确方法吗?您可以使用Apache的:
等质量论者
根据中的相等合同测试两个列表的值相等
List.equals(java.lang.Object)
当您无法扩展列表时,此方法对于实现列表非常有用
抽象列表。该方法使用集合实例来启用其他
集合类型以使用列表实现算法
相关文本(稍作解释,因为这是一种静态方法)
是:
比较两个列表对象是否相等。仅当且仅当返回true
如果两个列表的大小相同,并且所有对应的
两个列表中的元素相等。(两个元素e1和e2相等
换句话说,如果(e1==null?e2==null:e1.equals(e2)),则有两个列表
定义为相等,如果它们在同一行中包含相同的元素
秩序。此定义确保equals方法正常工作
跨列表接口的不同实现。注:该
如果在过程中修改列表,则此方法的行为未定义
这等于比较
您可以使用Apache的:
等质量论者
根据中的相等合同测试两个列表的值相等
List.equals(java.lang.Object)
当您无法扩展列表时,此方法对于实现列表非常有用
抽象列表。该方法使用集合实例来启用其他
集合类型以使用列表实现算法
相关文本(稍作解释,因为这是一种静态方法)
是:
比较两个列表对象是否相等。仅当且仅当返回true
如果两个列表的大小相同,并且所有对应的
两个列表中的元素相等。(两个元素e1和e2相等
换句话说,如果(e1==null?e2==null:e1.equals(e2)),则有两个列表
定义为相等,如果它们在同一行中包含相同的元素
秩序。此定义确保equals方法正常工作
跨列表接口的不同实现。注:该
如果在过程中修改列表,则此方法的行为未定义
这等于比较
您可以使用Apache的:
等质量论者
根据中的相等合同测试两个列表的值相等
List.equals(java.lang.Object)
当您无法扩展列表时,此方法对于实现列表非常有用
抽象列表。该方法使用集合实例来启用其他
集合类型以使用列表实现算法
相关文本(稍作解释,因为这是一种静态方法)
是:
比较两个列表对象是否相等。仅当且仅当返回true
如果两个列表的大小相同,并且所有对应的
两个列表中的元素相等。(两个元素e1和e2相等
换句话说,如果(e1==null?e2==null:e1.equals(e2)),则有两个列表
定义为相等,如果它们在同一行中包含相同的元素
秩序。此定义确保equals方法正常工作
跨列表接口的不同实现。注:该
如果在过程中修改列表,则此方法的行为未定义
这等于比较
您可以使用Apache的:
等质量论者
根据中的相等合同测试两个列表的值相等
List.equals(java.lang.Object)
当您无法扩展列表时,此方法对于实现列表非常有用
抽象列表。该方法使用集合实例来启用其他
集合类型以使用列表实现算法
相关文本(稍作解释,因为这是一种静态方法)
是:
比较两个列表对象是否相等。仅当且仅当返回true
如果两个列表的大小相同,并且所有对应的
两个列表中的元素相等。(两个元素e1和e2相等
换句话说,如果(e1==null?e2==null:e1.equals(e2)),则有两个列表
定义为相等,如果它们在同一行中包含相同的元素
秩序。此定义确保equals方法正常工作
跨列表接口的不同实现。注:该
如果在过程中修改列表,则此方法的行为未定义
这等于比较
这是正确的方法。你的名单和你说的不一样。试着打印它们以便目视检查。这是正确的方法。你的名单和你说的不一样。试着打印它们以便目视检查。这是正确的方法。你的名单和你说的不一样。试着打印它们以便目视检查。这是正确的方法。你的名单和你说的不一样。尝试打印它们以进行目视检查。要使两个列表相等,它们需要具有相同的顺序。我只能假设,在考虑相等性时,您希望忽略两个列表的顺序 对于忽略顺序的比较,可以比较两个
Map
实例(其中Integer
是每个字符串的计数)
例如:
public boolean isEqualIgnoreOrder(列表l1、列表l2){
如果(l1.size()!=l2.size()){
返回false;
}
Map m1=createMap(l1);
Map m2=createMap(l2);
返回m1等于(m2);
}
受保护映射createMap(列表){
Map Map=newhashmap();
对于(T项:列表){
整数prevCount=map.get(项);
put(prevCount==null?1:prevCount+1);
}
返回图;
}
这种类型的收集被称为包。更多讨论要使两个列表相等,它们需要具有相同的顺序。我只能假设,在考虑相等性时,您希望忽略两个列表的顺序 对于忽略顺序的比较,可以比较两个
Mappublic static boolean isEqualList(java.util.Collection list1,
java.util.Collection list2)
public <T> boolean isEqualIgnoreOrder(List<T> l1, List<T> l2) {
if (l1.size() != l2.size()) {
return false;
}
Map<T, Integer> m1 = createMap(l1);
Map<T, Integer> m2 = createMap(l2);
return m1.equals(m2);
}
protected <T> Map<T, Integer> createMap(List<T> list) {
Map<T, Integer> map = new HashMap<T, Integer>();
for (T item : list) {
Integer prevCount = map.get(item);
map.put(prevCount == null ? 1 : prevCount + 1);
}
return map;
}