公告:欢迎访问,查看更多资源请点我^.^!            点我关闭广告
集合工具类(随时补充)
2019-02-25 11:32:37
940人阅读
评论(1)
分类:Java
import java.util.*;

/**
* @author 赵超
*/
public class ListUtil {

private static final Integer INTEGER_ONE = 1;

/**
* 截取列表list
* @param list 待截取列表
* @param size 每段长度
* @param <T> 列表范型类型
* @return
*/
public static <T> List<List<T>> subList(List<T> list, int size) {
List<List<T>> res = new ArrayList<>();
int times = list.size() / size + (list.size() % size == 0 ? 0 : 1);
for (int i = 1; i <= times; i++) {
List<T> temp = list.subList(size * (i - 1), i == times ? list.size() : size * i);
res.add(temp);
}
return res;
}

/**
* 判断两个集合中的元素是否相同
* @param a
* @param b
* @return
*/
public static boolean isEqualCollection(Collection a, Collection b) {
if (a == null || b == null || a.size() != b.size()) { // size是最简单的相等条件
return false;
}
Map mapa = getCardinalityMap(a);
Map mapb = getCardinalityMap(b);

// 转换map后,能去掉重复的,这时候size就是非重复项,也是先决条件
if (mapa.size() != mapb.size()) {
return false;
}
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, 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;
}
}


分享一下:
赞一下(0)
博主资料
博主头像
zc521106
文章:34
浏览:19899
文章分类
Java(12)
NoSql(112)
数据库(12)
前端(12)
阅读排行
Java基础知识
(12)
NoSql应用
(112)
数据库Oracle语法
(12)
前端常用工具类
(12)
java web项目
(12)
linux安装mysql
(12)
评论区
这篇文章怎么样?写点评论吧!
姓名:
邮箱:
有回复时通知我:
发表
回复【10.20.30.32】:
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); // 1th param数据源,2th param从数据员拷贝开始的索引,3th param目标数据(数组等),4th param插入目标数据的开始索引,5th param插入的长度
2019-07-09 14:32:36
* 以上用户言论只代表其个人观点,不代表iBlog网站的观点或立场,如有任何疑问请随时联系管理员...