// 判断并返回结果 true和false
public static boolean isEqualCollection(Collection a, Collection b) {
if (a.size() != b.size()) { // size是最简单的相等条件
return false;
}
Map mapa = getCardinalityMap(a);
System.out.println(mapa);
Map mapb = getCardinalityMap(b);
System.out.println(mapb);
// 转换map后,能去掉重复的,这时候size就是非重复项,也是先决条件
if (mapa.size() != mapb.size()) {
System.out.println(“存储的map数据不一致!”);
return false;
} else {
System.out.println(“转换map后,能去掉重复的,这时候size就是非重复项后,存储的map数据一致!”);
}
Iterator it = mapa.keySet().iterator();
while (it.hasNext()) {
Object obj = it.next();
// 查询同一个obj,首先两边都要有,而且还要校验重复个数,就是map.value
if (getFreq(obj, mapa) != getFreq(obj, mapb)) {
return false;
}
}
return true;
}
/**
- 以obj为key,可以防止重复,如果重复就value++ 这样实际上记录了元素以及出现的次数
*/
public static Map getCardinalityMap(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;
}
private static final int getFreq(Object obj, Map freqMap) {
Integer count = (Integer) freqMap.get(obj);
if (count != null) {
return count.intValue();
}
return 0;
}
// main方法测试类
public static void main(String[] args) {
Map<String, Object> m1 = new HashMap<String, Object>();
m1.put(“a”, “abc”);
m1.put(“b”, “123”);
m1.put(“c”, “123”);
m1.put(“d”, “123”);
Map<String, Object> m2 = new HashMap<String, Object>();
m2.put(“c”, “123”);
m2.put(“a”, “abc”);
m2.put(“b”, “123”);
m2.put(“d”, “123”);
Map<String, Object> m3 = new HashMap<String, Object>();
m3.put(“a”, “abc”);
m3.put(“b”, “123”);
m3.put(“c”, “123”);
m3.put(“d”, “123”);
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
重要的事说三遍,关注+关注+关注!*
[外链图片转存中…(img-sWbtfE3J-1714343642052)]
[外链图片转存中…(img-UnyWv3tS-1714343642053)]
更多笔记分享
[外链图片转存中…(img-PQcHBBv9-1714343642053)]