如何去掉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来去重,但是 ...
随机推荐
- acm常见算法及例题
转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法: (1)枚举. (poj17 ...
- 2016HUAS暑假集训训练2 J - 今年暑假不AC
题目链接:http://acm.hust.edu.cn/vjudge/contest/121192#problem/J 此题要求是计算能够看到最多的节目 ,贪心算法即可,首先对结束时间排序,然后在把开 ...
- C++中嵌入Lua脚本环境搭建
第一步(环境准备工作): 工具: ●LuaForWindows_v5.1.4-46.exe傻瓜式安装. 作用:此工具可以在windows环境下编译运行Lua脚本程序.安装完成后会有两个图标:Lua和S ...
- 矩形的个数-nyoj206
描述在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形.给出A,B,计算可以从中找到多少个矩形. ...
- readyState0 1 2 3 4..
0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头). 3:请求在处理中:通常响 ...
- GDC2016 执着于光影表现的【全境封锁】的开放世界渲染
执着于光影表现[全境封锁]的开放世界渲染 Snowdrop(雪莲花)引擎的全局照明技术介绍 补上原文链接:http://game.watch.impress.co.jp/docs/news/201 ...
- 【转】基于 CoreText 实现的高性能 UITableView
引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...
- HTML添加多媒体或音乐
1,添加多媒体 <embed src="多媒体文件地址" width="多媒体的宽度" height="多媒体的高度" autosta ...
- LeetCode Strobogrammatic Number II
原题链接在这里:https://leetcode.com/problems/strobogrammatic-number-ii/ 题目: A strobogrammatic number is a n ...
- PowerDesigner连接mysql逆向生成pdm
常用的建模工具有:PowerDesigner和ERWin,后者已快被淘汰,但前者依然活跃.相信大家都遇到过项目组已经运营很很久,但是竟然连一个ER图都没有,今天就讲解一下PowerDesigner连接 ...