去除List<Object>集合中重复的元素
下面我就以实际操作来介绍三种去除重复的方法
1. 效率相对来说是最慢的
fans = articleTagMng.find(f1); //获取整个list if(!fans.isEmpty()){ for(int i=0;i<fans.size();i++){ //外循环 for(int j=i+1;j<fans.size();j++){ //内循环 if(fans.get(i).getName().equals(fans.get(j).getName())){ fans.remove(j); } } } }
上面的双重循环用处很常见,像以前学过的选择排序、冒泡排序等都用到了。但是用在这里却是效率最低的方法,因为当内循环下的 if 条件满足时fans就会remove,此时就可能会影响到外层循环。。。降低代码的执行效率
2. 和上面的实例差不多的,只是内循环用了递减remove
fans = articleTagMng.find(f1); if(!fans.isEmpty()){ for(int i=0;i<fans.size();i++){ for(int j=fans.size()-1;j>i;j--){ if(fans.get(i).getName().equals(fans.get(j).getName())){ fans.remove(j); } } } }
3. 利用HashSet的特性---无重复元素
List<ArticleTag> at_list = articleTagMng.find(finder); if(!at_list.isEmpty()){ List<Article> tag = articleMng.getRelateArticles(at_list , article.getId() , article.getFans().getId()); if(!tag.isEmpty()){ HashSet hs = new HashSet<Article>(tag); //以传参的形式new一个HashSet tag.clear(); //去除所有元素 tag.addAll(hs); //增加hs集合到tag集合中去 } return tag; }
这种方式效率相对来说是比较高的。
写博客不仅是一种习惯,更是一种沉淀。