集合
去除两个字段中重复的数据
//去除重复
public static List<Integer> getvip(String vip, String vip1){
String [] vevip=vip.split(","); //对“,”相隔的String字段拆分
int[] ivevip = new int[vevip.length];
for(int i=0;i<vevip.length;i++){
ivevip[i] = Integer.parseInt(vevip[i]); //String数组转Integer
}
String [] arrvip=vip1.split(",");
int[] iarrvip = new int[arrvip.length];
for(int i=0;i<arrvip.length;i++){
iarrvip[i] = Integer.parseInt(arrvip[i]); //String数组转Integer
}
Set<Integer> set = new HashSet<Integer>(); //利用set去除重复
for (int i : ivevip) {
set.add(i);
}
for (int i : iarrvip) {
set.add(i);
}
List<Integer> list = new ArrayList<Integer>(set); //转list
Collections.sort(list); //排序
return list;
}
public static void main(String[] args) {
List<Integer>list=CollectionUtil.getvip("1,2,3,4,5", "4,5,6,7,8");
for(Integer i:list){
System.out.print(i+"\t");
}
}
两个字段中重复的数据全都删除
/**
* 找出两个集合中不同的元素
*
* @param collmax
* @param collmin
* @return
*/
public static Collection getDifferent(Collection collmax, Collection collmin) {
//使用LinkedList防止差异过大时,元素拷贝
Collection csReturn = new LinkedList();
Collection max = collmax;
Collection min = collmin;
//先比较大小,这样会减少后续map的if判断次数
if (collmax.size() < collmin.size()) {
max = collmin;
min = collmax;
}
//直接指定大小,防止再散列
Map<Object, Integer> map = new HashMap<Object, Integer>(max.size());
for (Object object : max) {
map.put(object, 1);
}
for (Object object : min) {
if (map.get(object) == null) {
csReturn.add(object);
} else {
map.put(object, 2);
}
}
for (Map.Entry<Object, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
csReturn.add(entry.getKey());
}
}
return csReturn;
}
/**
* 获取两个集合的不同元素,去除重复
*
* @param collmax
* @param collmin
* @return
*/
public static Collection getDiffentNoDuplicate(Collection collmax, Collection collmin) {
return new HashSet(getDifferent(collmax, collmin));
}
public static void main(String[] args) {
List<Integer>list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
List<Integer>list1=new ArrayList<Integer>();
list1.add(4);
list1.add(5);
Collection same=CollectionUtil.getDiffentNoDuplicate(list, list1);
Object[] arr=same.toArray();
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
也可以采用下面的方法,先找出两个集合中重复的元素,再删除目标集合中重复的数据
/**
* 找出两个集合中相同的元素
*
* @param collmax
* @param collmin
* @return
*/
public static Collection getSame(Collection collmax, Collection collmin) {
//使用LinkedList防止差异过大时,元素拷贝
Collection csReturn = new LinkedList();
Collection max = collmax;
Collection min = collmin;
//先比较大小,这样会减少后续map的if判断次数
if (collmax.size() < collmin.size()) {
max = collmin;
min = collmax;
}
//直接指定大小,防止再散列
Map<Object, Integer> map = new HashMap<Object, Integer>(max.size());
for (Object object : max) {
map.put(object, 1);
}
for (Object object : min) {
if (map.get(object) != null) {
csReturn.add(object);
}
}
return csReturn;
}
public static void main(String[] args) {
List<Integer>list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
List<Integer>list1=new ArrayList<Integer>();
list1.add(4);
list1.add(5);
Collection same = CollectionUtil.getSame(list1, list);
Object[] arr=same.toArray();
for(int i=0;i<arr.length;i++){
list.remove(arr[i]); //遍历删除重复的数据
}
for(Integer i:list){
System.out.print(i+"\t");
}
}
在实际的场景运用中要判断传入的参数是否为空。