本文的去重都是使用HashMap实现的,使用HashSet也可以实现
- 比较两个Collection是否存在重复元素
/**
* @Title: compareCollection
* @Description: 比较两个Collection是否存在重复元素,重复返回true
* @param: collectionOne
* @param: collectionTwo
* @return: boolean
* @throws
*/
public static boolean compareCollection(Collection<?> collectionOne,Collection<?> collectionTwo) {
Iterator<?> iterator = collectionOne.iterator();
while(iterator.hasNext()){
if(collectionTwo.contains(iterator.next())){
return true;
}
}
return false;
}
- 获取两集合重复元素
// Dummy value to associate with an Object in the backing Map
// Map中的对象关联的哑值
private static final Object PRESENT = new Object();
/**
* @throws
* @Title: getRepeatElement
* @Description: 获取两集合重复元素
* @param: collectionOne
* @param: collectionTwo
* @return: List<Object>
*/
public static List<Object> getRepeatElement(Collection<?> collectionOne, Collection<?> collectionTwo) {
List<Object> list = new ArrayList<>();
Map<Object,Object> map = new HashMap<>();
Iterator<?> oneIter = collectionOne.iterator();
while (oneIter.hasNext()) {
map.put(oneIter.next(),PRESENT);
}
Iterator<?> tweIter = collectionTwo.iterator();
while (tweIter.hasNext()) {
Object o = tweIter.next();
if (map.containsKey(o)) {
list.add(o);
}
}
return list;
}
- 获取两集合不重复元素
// Dummy value to associate with an Object in the backing Map
// Map中的对象关联的哑值
private static final Object PRESENT = new Object();
/**
* @throws
* @Title: getNoRepeatElement
* @Description: 获取两集合不重复元素
* @param: collectionOne
* @param: collectionTwo
* @return: List<Object>
*/
public static List<Object> getNoRepeatElement(Collection<?> collectionOne, Collection<?> collectionTwo) {
List<Object> diff = new ArrayList<>();
Map<Object,Object> map = new HashMap<>();
Iterator<?> oneIter = collectionOne.iterator();
while (oneIter.hasNext()) {
map.put(oneIter.next(),PRESENT);
}
Iterator<?> tweIter = collectionTwo.iterator();
while (tweIter.hasNext()) {
Object o = tweIter.next();
if (map.containsKey(o)) {
map.remove(o);
continue;
}
map.put(o, PRESENT);
}
for(Entry<Object, Object> entry:map.entrySet()){
diff.add(entry.getKey());
}
return diff;
}
- 获取无重复元素的集合
// Dummy value to associate with an Object in the backing Map
// Map中的对象关联的哑值
private static final Object PRESENT = new Object();
/**
* @throws
* @Title: getNoRepeatElement
* @Description: 获取无重复元素的集合
* @param: collectionOne
* @param: collectionTwo
* @return: List<Object>
*/
public static List<Object> getNoRepeatConllection(Collection<?> collectionOne, Collection<?> collectionTwo) {
List<Object> diff = new ArrayList<>();
Map<Object,Object> map = new HashMap<>();
Iterator<?> oneIter = collectionOne.iterator();
while (oneIter.hasNext()) {
map.put(oneIter.next(),PRESENT);
}
Iterator<?> tweIter = collectionTwo.iterator();
while (tweIter.hasNext()) {
map.put(tweIter.next(),PRESENT);
}
for(Entry<Object, Object> entry:map.entrySet()){
diff.add(entry.getKey());
}
return diff;
}
- 判断 Collection 是否为空
/**
* @Title: isEmpty
* @Description: 判断 Collection 是否为空
* @param: collection
* @return: boolean
* @throws
*/
public static boolean isEmpty(Collection<?> collection){
return null == collection || collection.size() == 0;
}