如何去掉list里重复的数据
去掉list重复的数据,目前总结的以下三种方法,分别是采用set集合来做、两层循环不用任何方法来做,以及一层循环采用contains()方法来做,如下:
1.采用set结合来做:
package test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test1 {
//采用set来做,因为set是不重复的
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(3);
list.add(2);
list.add(1);
System.out.println(list);
//上面的list里装的有重复的数据,我要用set来去掉重复
Set<Integer> set=new HashSet<Integer>(list);
System.out.println(set);//这里的set里的值已经是去掉了重复的了,如果我还想要将原有的list去重复,如下:
System.out.println(list);
list.clear();//将原来的list的数据全部清空
System.out.println(list);
list.addAll(set);//将set集合的值放入到list里,因为set里是没有重复的了,这个时候list也就没有重复的了
System.out.println(list);
}
}
2.采用双重循环来做:
package test;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
//方法二:采用循环来做
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(3);
list.add(2);
list.add(1);
list.add(1);
list.add(4);
list.add(4);
System.out.println(list);
for (int i = 0; i < list.size()-1; i++) {//从第一个数开始,到最后一个数-1次循环
for (int j = list.size()-1; j >i;j--) {//从最后一个数开始到i+1
if(list.get(i)==list.get(j)){
list.remove(j);//这里的remove里的参数j就是角标,通过角标移除数据
}
}System.out.println(list);
}
System.out.println();
System.out.println(list);
}
}
3.采用contains()方法来做,一层循环即可解决问题:
package test;
import java.util.ArrayList;
import java.util.List;
public class Test3 {
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(3);
list.add(2);
list.add(1);
list.add(1);
list.add(4);
list.add(4);
System.out.println(list);
List<Integer> newList = getNewList(list);
System.out.println(newList);
}
/**
*
* 采用contains()方法
* @param list
* @return list
* 说明:我需要一个不重复的list,那么我循环你给我的带重复数据的list,只有满足我新的list里不包含重复list里的值的时候,我再把获取的原list的值放的我新的list里,
* 也就是如果我的新的list有了值,那么我就不向像新的里面添加值了。
*/
public static List<Integer> getNewList(List<Integer> list){
List<Integer> myList=new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
if(!myList.contains(list.get(i))){
myList.add(list.get(i));;
}
}
return myList;
}
}
4.还是双重循环,也不用方法二来做
/**
* @author yanxu
*用双重循环去掉重复,不用任何方法,也不用那个:外层 循环从0到长度-1,后面那个相反的那个
*/
public static List<Integer> getDistinctList(List<Integer> list){
List<Integer> newList = new ArrayList<Integer>();
for (int i = 0; i < list.size(); i++) {
//标识,方便下面使用
boolean flag = false;
//只要新的list里包含循环到的值,就说明重复了。
for(int j = 0; j<newList.size(); j++){
if(list.get(i) == newList.get(j)){
flag = true;
//找到一次就可以退出了 ,不需要再进行额外的次数;而且这里也不会再出现第二次 。
break;
}
}
if(!flag){
newList.add(list.get(i));
}
}
return newList;
}
如何去掉list里重复的数据的更多相关文章
- C#中去掉表中重复的数据
/// <summary> /// 去掉表中重复的数据 int /// </summary> /// <param name="SourceTable&quo ...
- Excel: 使用Countif函数来去掉Excel中重复的数据
如果使用Ruby脚本,uniq函数就能搞定一切.不过我们现在还是讨论怎么用excel的Countif函数吧. 假设Excel中有一列数据:
- mysql 用sql 语句去掉某个字段重复值数据的方法
示例代码如下: create table tmp as select min(主键) as col1 from 去重表名 GROUP BY 去重字段; delete from 去重表名 where 主 ...
- mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行
delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...
- c# 如何中List<object>中去掉object对象中的重复列数据?
//去掉重复 var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.F ...
- mysql插入数据时,去掉重复的数据;
1. 利用insert ignore into语句去重 mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VA ...
- EF里Guid类型数据的自增长、时间戳和复杂类型的用法
通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...
- J2EE判断重复的数据
import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...
- mongodb去除重复的数据
里边的内容在某些情况下不可行,可以参考下一篇. 今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据. 虽然mongodb中有distinct来去重,但是 ...
随机推荐
- vbs下载者
一.VBS下载者: Set Post = CreateObject("Msxml2.XMLHTTP") Set Shell = CreateObject("Wscript ...
- github上怎么预览页面
直接在 http://htmlpreview.github.io/? 后面加上git上的地址就可以预览了 比如 http://htmlpreview.github.io/?https://github ...
- XML于JSON
XML:可拓展的标记语言(跨平台数据表现)用于保存数据 XML:标记需要关闭 :单根性 .NET中DOM常用对象: XmlDocument :一个XML文档 XmlNode:xml中的单个节点 Xml ...
- Java中this关键字的几种用法
1 . 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = " ...
- node js 模块分类
核心模块 require('fs'); 核心模块是被编译成二进制代码 文件模块 require('../fs.js'); 对于加载模块时既没指出./ ../ /.../时,加载模块的搜索路径.如果'/ ...
- 类似网易新闻 title栏 滚动时 文字放大&变色
http://files.cnblogs.com/files/n1ckyxu/ScrollTitleView.zip
- 【转】arcgis server site 快速恢复与重建
作者:suwenjiang 出处:http://www.cnblogs.com/myyouthlife/ 具体链接:http://www.cnblogs.com/myyouthlife/p/48985 ...
- Python之调用函数
Python之调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数. 可以直接从Python的官方网站查 ...
- Windows下mock环境搭建-加速项目Api开发
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 公司进行技术部拆分,以项目制作为新的开发模式,前端+移动端+后端,于是加速Api开发变得很有必要,准 ...
- zepto源码--核心方法6(显示隐藏)--学习笔记
在不引入zepto插件模块fx_metho其他ds的情况下,zepto默认的显示隐藏的函数只有show, hide, toggle,这里解释有个前提条件,就是没有引入zepto的fx_methods插 ...