精华内容
下载资源
问答
  • java List去除重复数据的五种方式

    万次阅读 多人点赞 2019-05-31 12:38:30
    以下介绍五种-不同的方法去除Java中ArrayList中的重复数据 1.使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复...

     

    以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据

    1.使用LinkedHashSet删除arraylist中的重复数据

    LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:

    • 删除重复数据
    • 保持添加到其中的数据的顺序

    Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字,例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。

    
        public static void main(String[] args) {
            int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
            LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(List);
            ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
            System.out.println(listWithoutDuplicates);
    
        }
    
    

    输出结果

    [1, 2, 3, 4, 5, 6, 7, 8]

    2.使用java8新特性stream进行List去重 

    要从arraylist中删除重复项,我们也可以使用java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

    收集所有区域数据List使用Collectors.toList()

    Java程序,用于在不使用Set的情况下从java中的arraylist中删除重复项

    public static void main(String[] args){
            int List[] =[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
            List<Integer> listWithoutDuplicates = List.stream().distinct().collect(Collectors.toList());
            System.out.println(listWithoutDuplicates);
        }
    
    

    输出结果

    [1, 2, 3, 4, 5, 6, 7, 8]

     

    3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序:

    private static void removeDuplicate(List<String> list) {
        HashSet<String> set = new HashSet<String>(list.size());
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (set.add(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }



    4.利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:

    private static void removeDuplicate(List<String> list) {
        List<String> result = new ArrayList<String>(list.size());
        for (String str : list) {
            if (!result.contains(str)) {
                result.add(str);
            }
        }
        list.clear();
        list.addAll(result);
    }

    5.双重for循环去重 

    
    public static void main(String[] args) {
    	int List[] = [1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
    	for (int i = 0; i < List.size(); i++) {
    		for (int j = i + 1; j < List.size(); j++) {
    			if (List.get(i) == List.get(j)) {
    				List.remove(j);
    				j--;
    			}
    		}
    	}
    }


     

    展开全文
  • 在实际开发中,经常会遇到需要找出(删除)一个list中某些元素属性相同元素,或者两个list中某些元素属性相等元素,这种方法很多,这里整理列出一些: 废话不说,上代码,有注释掉你们自己看import java....

    在实际开发中,经常会遇到需要找出(删除)一个list中某些元素的属性相同的元素,或者两个list中某些元素的属性相等的元素,这种方法很多,这里整理列出一些:
    废话不说,上代码,有注释掉的你们自己看

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Test {
    	public static void main(String[] args) {
    		List<Student> testList = new ArrayList<Student>();
    		testList.add(new Student("张一"));
    		testList.add(new Student("张二"));
    		testList.add(new Student("张三"));
    		testList.add(new Student("老王"));
    		testList.add(new Student("张四"));
    		testList.add(new Student("张五"));
    		testList.add(new Student("张六"));
    		testList.add(new Student("张七"));
    		testList.add(new Student("老王"));
    		testList.add(new Student("张八"));
    		testList.add(new Student("张九"));
    		testList.add(new Student("老王"));
    
    		List<Student> repeatList = new ArrayList<Student>();//用于存放重复的元素的list
    
    		// 以一种方法:两个循环(最蠢的方法)
    		for (int i = 0; i < testList.size() - 1; i++) {
    			for (int j = testList.size() - 1; j > i; j--) {
    				if (testList.get(j).getStuName().equals(testList.get(i).getStuName())) {
    					repeatList.add(testList.get(j));//把相同元素加入list(找出相同的)
    		
    					testList.remove(j);//删除重复元素
    				}
    			}
    		}
    //		for(Student s : repeatList){
    //			System.out.println("相同的元素:" + s.getStuName());
    //		}
    		
    		
    		//第二种方法:利用map.containsKey()
    		Map<String, Integer> map = new HashMap<>(); 
    		for(Student s : testList){
    			//1:map.containsKey()   检测key是否重复
    			if(map.containsKey(s.getStuName())){
    				repeatList.add(s);//获取重复的学生名称
    				
    				Integer num = map.get(s.getStuName());
    				map.put(s.getStuName(), num+1);
    			}else{
    				map.put(s.getStuName(), 1);
    			}
    			//2: 这个key是不是存在对应的value(key是否在map中)
    //			Integer count = map.get(s.getStuName());//这种写法也可以,异曲同工
    //          if (count == null) {
    //              map.put(s.getStuName(), 1);
    //          } else {
    //              map.put(s.getStuName(), (count + 1));
    //          }
    		}
    //		for(Student s : repeatList){
    //			System.out.println("相同的元素:" + s.getStuName());
    //		}
    //		for(Map.Entry<String, Integer> entry : map.entrySet()){
    //			System.out.println("学生:" + entry.getKey() + "的名字出现了:" + entry.getValue() + "次");
    //		}
    		
    		
    		//第三种方法:contains()方法  这个个人认为有一定的局限性,个人理解哈
            List<Integer> repeatList1 = new ArrayList<>();  
            List<Integer> list = new ArrayList<>();  
            list.add(1);
            list.add(2);
            list.add(1);
            list.add(3);
            list.add(4);
            list.add(1);
            list.add(5);
            for(int i=0;i<list.size();i++){  
                if(!repeatList1.contains(list.get(i))){  
                	repeatList1.add(list.get(i));  
                }  
            } 
            for(Integer s : repeatList1){
    			System.out.println(s);
    		}
    	}
    }
    
    

    Student类:

    public class Student {
    	
    	public Student(String stuName){
    		this.stuName = stuName;
    	}
    	
    	private String 	stuName;
    
    	public String getStuName() {
    		return stuName;
    	}
    
    	public void setStuName(String stuName) {
    		this.stuName = stuName;
    	}
    	
    }
    

    这个是java8的stream,由于我用的还是jdk7 这里就找了一个 给你们当例子看,有兴趣可以看stream相关的知识,很强大的功能

    List<String> list = Arrays.asList("123", "1234", "12345", "123456", "1234567", "122222223", "123", "1234", "2422");
    Map<String, Long> collect = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    System.out.println(collect);
    

    就列出这么几种,应该够用了
    原创:影公子 ——转载请注明原帖链接

    展开全文
  • 以下介绍五种不同的方法去除Java 中ArrayList中的重复数据。1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...

    以下介绍五种不同的方法去除Java 中ArrayList中的重复数据。

    1.使用LinkedHashSet删除arraylist中的重复数据

    LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据

    保持添加到其中的数据的顺序

    Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。

    例如1,3和5。我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。870acfb12f004b2c914609242d985c05.png

    输出结果473d687368be684bd7ee45cb3ec5395f.png

    2.使用java8新特性stream进行List去重

    要从arraylist中删除重复项,我们也可以使用java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

    收集所有区域数据List使用Collectors.toList()。

    Java程序,用于在不使用Set的情况下从java中的arraylist中删除重复项。1d2bb8998d3810ef115965f5522d3708.png

    输出结果473d687368be684bd7ee45cb3ec5395f.png

    3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序:3d202a45afa45e05754b52f000f11a49.png

    4.利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:cb9a349cd330ed02d8abbce81096e11d.png

    5.双重for循环去重6c852bb387d7c5547f001ad211073291.png作者:xcbeyond

    来源:掘金

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 去除List重复的数据

    2017-03-20 15:04:01
    * TODO 去除两个list重复数据 * @param List ,List * @author 邓超 * @version 1.0 * @time 2017-03-16 * @return addList与updateList不相同数据集合 */ private List addList

    /**
    * TODO 去除两个list重复数据
    * @param List ,List
    * @author 邓超
    * @version 1.0
    * @time 2017-03-16
    * @return addList与updateList不相同数据的集合
    */
    private List addList(List addList,List updateList){
    List newList = new ArrayList();
    try {

            Map<String, DateMainTainVO> map =new HashMap<String, DateMainTainVO>();
            for(DateMainTainVO temp : addList){
                map.put(DateUtils.formatDateToSimple(temp.getMainTainDate()), temp);
            }
    
    
            for(DateMainTainVO temp : updateList){
                if(map.containsKey(DateUtils.formatDateToSimple(temp.getMainTainDate()))){
                    map.remove(DateUtils.formatDateToSimple(temp.getMainTainDate()));
                }
            }
            if(map!=null &&map.size()>0){
                Iterator it = map.keySet().iterator();  
                   while (it.hasNext()) {  
                       String key = it.next().toString();  
                       newList.add(map.get(key));  
                   } 
                   return newList;
            }else{
                return null;
            }
        } catch (Exception e) {
            log.error("[ERROR:去除去除addList中与updateList相同数据 出现未知异常]",e);
            return null;
        }
    
    }
    

    /**
    * TODO 去除excel表中重复数据,去除一个list中重复数据
    * @author 邓超
    * @version 1.0
    * @time 2017-03-16
    * @param List list
    * @return List
    */
    private List repetitionList(
    List list){
    List newList = new ArrayList();
    try {
    if(list == null || list.size() <= 0){
    return new ArrayList();
    } else if(list.size() == 1){
    return list;
    }
    Map

    展开全文
  • 以下介绍几种不同的方法去除 Java 中ArrayList中的重复数据一.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • 方法一:public List getUniqueOrders(List arlList){HashSet h=new HashSet(arlList);arlList.clear();arlList.addAll(h);List list=new ArrayList();list=arlList;return list;}方法二:public List ...
  • 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1、使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • 在使用java编码中,我们会经常遇到让List对象去重,最常见的是ArrayList去除重复的数据, 看似很简单的东西,其实里面是有很多学问的,下面介绍不同的方法去除java中ArrayList中的重复数据1、使用LinkedHashSet删除...
  • 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • 以下介绍几种不同的方法去除 Java 中ArrayList中的重复数据一.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • 展开全部删除ArrayList中重复数据保条数。public static void removeDuplicateWithOrder(List list) 。Set set = new HashSet()List newList = new ArrayList()for (Iterator iter = list.iterator(); iter.hasNext...
  • List去除重复数据的五种方式
  • 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • List去除重复数据

    2020-11-17 13:41:46
    1.使用LinkedHashSet删除arraylist中的重复数据 ,LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。 LinkedHashSet在内部完成两件事: (1) 删除重复数据 (2) 保持添加到其中的数据的顺序 ArrayList<...
  • 1.使用LinkedHashSet删除arraylist中的重复数据 LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java示例使用LinkedHashSet删除...
  • list去除重复数据

    2014-11-10 12:45:00
    在java里面要想去除list的重复数据可以使用两种方式实现:1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { ...
  • 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据...
  • 以下介绍五种-不同的方法去除Java中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据删除重复数据保持添加到其中的数据的顺序Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中...
  • 在实际开发中,经常会遇到需要找出(删除)一个list中某些元素属性相同元素,或者两个list中某些元素属性相等元素,这种方法很多,这里整理列出一些:废话不说,上代码,有注释掉你们自己看import java.util...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 693
精华内容 277
关键字:

去除list的重复数据