Java中判断两个列表是否相等
- CollectionUtils.isEqualCollection(final Collection a, final Collection b)
- CollectionUtils工具类中有一个查看两个Collection是否相等的方法。
- public static boolean isEqualCollection(final Collection a, final Collection b) {
- if(a.size() != b.size()) {
- return false;
- } else {
- //获取以对象为键以对象的数量位置的Map
- Map mapa = getCardinalityMap(a);
- Map mapb = getCardinalityMap(b);
- if(mapa.size() != mapb.size()) {
- return false;
- } else {
- Iterator it = mapa.keySet().iterator();
- while(it.hasNext()) {
- Object obj = it.next();
- //获取对象的数量,判断是否相等
if(getFreq(obj,mapa) != getFreq(obj,mapb)) {- return false;
- }
- }
- return true;
- }
- }
- }
主要的方法是getCardinalityMap(Collection coll)方法,返回的结果是以对象为键,以对象的数量为值的Map。
- public static Map getCardinalityMap(final Collection coll) {
- Map count = new HashMap();
- for (Iterator it = coll.iterator(); it.hasNext();) {
- Object obj = it.next();
- Integer c = (Integer) (count.get(obj));
- if (c == null) {
- count.put(obj,INTEGER_ONE);
- } else {
- count.put(obj,new Integer(c.intValue() + 1));
- }
- }
- return count;
- }
从Map中获取对象数量的方法
- private static final int getFreq(final Object obj, final Map freqMap) {
- Integer count = (Integer) freqMap.get(obj);
- if (count != null) {
- return count.intValue();
- }
- return 0;
- }
注意:这里两个Collection中的对象需要实现hashcode()和equals()方法
Java中判断两个列表是否相等的更多相关文章
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- Java中判断两个Long类型是否相等
在项目中将两个long类型的值比较是否相等,结果却遇到了疑问? 下面就陪大家看看一个神奇的现象! 1.1问题?为什么同样的类型,同样的值,却不相等呢? 1.2那么我们就需要探索一下源码了 源码中显示, ...
- Java 中判断两个对象是否相等
由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transp ...
- java中判断两个对象是否相等
package ceshi.com.job; import java.util.ArrayList; import java.util.Arrays; import java.util.List; p ...
- Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- Java 中字两个字符串判断是否相等(转载)
java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...
- python 判断两个列表中相同和不同的元素
背景: 在做接口自动化时,通常会判断接口返回中的数据信息,与数据库中返回的数据信息是否一致,比如:将接口返回信息的用户姓名存放到一个列表中,将数据库返回的用户姓名存放到另一个列表中,这时需要判断两个列 ...
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...
- Java中的两个关键字——super、this
Java中的两个关键字——super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...
随机推荐
- 2019-11-29-dotnet-core-输出调试信息到-DebugView-软件
title author date CreateTime categories dotnet core 输出调试信息到 DebugView 软件 lindexi 2019-11-29 10:14:3 ...
- 进制转换以及byted与str的区别
二进制与十六进制数之间的转换 https://jingyan.baidu.com/article/47a29f24292608c0142399cb.html byted与str的区别 https:// ...
- Git入门指南九:远程仓库的使用【转】
转自:http://blog.csdn.net/wirelessqa/article/details/20152651 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 十三 ...
- 安装wordpress的过程
1 首先安装lamp.在安装php时,由于ubuntu16.04源中自带的是php7,所以需要直接安装 apt-get install phpapt-get install libapache2-mo ...
- C语言之带有数量可变的宏参数#define
1.定义格式如下 #define PR(...) printf(__VA_ARGS__) ...表示可变参数,__VA_ARGS__的作用是替换省略号的内容. 2.示例 #define ERROR( ...
- Codeforces 965 枚举轮数贪心分糖果 青蛙跳石头最大流=最小割思想 trie启发式合并
A /*#include<cstring>#include<algorithm>#include<queue>#include<vector>#incl ...
- PCRE does not support \L, \l, \N{name}, \U, or \u...
PCRE does not support \L, \l, \N{name}, \U, or \u... 参考文章:YCSUNNYLIFE 的 <php 正则匹配中文> 一.报错情景: 使 ...
- java多线程面试题整理及答案
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速.比如,如果一个线程完 ...
- python openpyxl 简单使用
1. 加载excel import openpyxl from openpyxl.utils import get_column_letter,column_index_from_string fro ...
- Bootstarp-table入门(1)
https://blog.csdn.net/dlf123321/article/details/52231926?locationNum=11&fps=1