以原list中某一列值为key进行归类(去重)
/**
* 以原list中某一列值为key进行归类(去重)
* @param memberContacts list对象
* @return 以原list中某一列值为key进行归类
*/
private Map<String, List<MemberContact>> removeListRepeatObject(List<MemberContact> memberContacts) {
Map<String, List<MemberContact>> map = new HashMap<String, List<MemberContact>>();
for (MemberContact s : memberContacts) {
if (map.containsKey(s.getMail())) {
List<MemberContact> rList = map.get(s.getMail());
rList.add(s);
} else {
List<MemberContact> rList = new ArrayList<MemberContact>();
rList.add(s);
map.put(s.getMail(), rList);
}
}
return map;
}
【说明】: 原来List<MemberContact>中以email为可以 判断是否有重复,如果有以email这一列为Key值进行归类,对应的value就是 原来list每一行数据
【结果类似结构】:{cxx2=[2, 4, 6], cxx1=[1, 3, 5], cxx3=[7]}
【字符串数组去重】:
public static String[] array_unique(String[] ss) {
Set<String> set=new HashSet<String>(Arrays.asList(ss));
return set.toArray(new String[set.size()]);
//或者return new HashSet<String>(Arrays.asList(ss)).toArray(new String[0]);
}
其中, 上面两种方式都可new String[set.size()] or new String[0],该数组只是为了作为输出String[]的一个模板,输出长度和该数组长度无关,把new String[0]换成ss也没问题,这样不会创建新对象,系统优化更好。