导航:首页 > 净水问答 > 集合过滤重复项

集合过滤重复项

发布时间:2022-01-08 07:17:09

㈠ 使用java集合去除一组数字中的重复项,并打印输出

publicclassRemoveDuplicate{
privatestaticint[]array={1,2,3,3,3,4,5,6,6,7};
publicstaticvoidremove(){
Set<Integer>set=newHashSet<>();
for(inti:array){
if(!set.add(i)){
System.out.println(i);
}
}
System.out.println(set.toString());
}

publicstaticvoidmain(String[]args){
RemoveDuplicate.remove();
}
}

以上是java代码。可以利用set 的元素的唯一性来完成你的要求。

set.add() 方法 如果添加失败那么会返回false,也就意味着里面已经有了一个同样的元素。

当然这个方法未必是最好的。可以利用一些更巧妙的方法达成。那样速度和效率都会更高。

(有部分人不知道为什么我的代码newHashSet<>里面没有指定类型。那么请参考java1.7新特性)

㈡ Java中如何去除List中的重复的值

你要去除的值是基本数据类型还是对象呢?
如果不想存重复数据何不用Set呢。。。

其实吧。。在知道上提问不如在网页上查。。这个是我查到的第一个。。网页里的内容,他一共使用了3种方式
最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢?
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。
//set集合去重,不打乱顺序
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");

Set set = new HashSet();
List newList = new ArrayList();
for (String cd:list) {
if(set.add(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}123456789101112131415161718
//遍历后判断赋给另一个list集合
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");

List<String> newList = new ArrayList<String>();
for (String cd:list) {
if(!newList.contains(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}1234567891011121314151617
//set去重
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");

Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);

System.out.println( "去重后的集合: " + newList);
}12345678910111213141516
//set去重(缩减为一行)
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");

List newList = new ArrayList(new HashSet(list));

System.out.println( "去重后的集合: " + newList);
}12345678910111213

hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)
//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list));

㈢ 去除list集合中重复项的几种方法

因为用到list,要去除重复数据,尝试了几种方法。记录于此。。。

测试数据:

List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"};
List<string> li2 = new List<string> { "张三", "张三", "李四", "张三", "王五", "李四" };
List<string> li3 = new List<string> { "A", "A", "C", "A", "C", "D" };
List<string> li4 = new List<string> { "12", "18", "19", "19", "10", "19" };
方法一:

HashSet<string> hs = new HashSet<string>(li1); //此时已经去掉重复的数据保存在hashset中

方法二:

for (int i = 0; i < li2.Count; i++) //外循环是循环的次数
{
for (int j = li2.Count - 1 ; j > i; j--) //内循环是 外循环一次比较的次数
{

if (li2[i] == li2[j])
{
li2.RemoveAt(j);
}

}
}

方法三:

//把相同的用null代替。
for (int i = 0; i < li3.Count; i++)
{
for (int j = 0; j < li3.Count; j++)
{
if (i == j) continue;

if (li3[i] == li3[j])
{
li3[j] = "null";
}

}
}

方法四:

//这方法跟上面的一样,只是变了逻辑
for (int i = 0; i < li4.Count - 1; i++)
{
for (int j = 0; j < li4.Count ; j++)
{
if (i != j)
{
if (li4[i] == li4[j])
{
li4[j] = "null";
}
}
}
}

最后输出看结果

Console.WriteLine("li1去除重复后的值为");
hs.ToList().ForEach(item => Console.WriteLine(item));

Console.WriteLine("li2去除重复后的值为");
li2.ForEach(item => Console.WriteLine(item));

Console.WriteLine("li3去除重复后的值为");
li3.ForEach(item => Console.WriteLine(item));

Console.WriteLine("li4去除重复后的值为");
li4.ForEach(item => Console.WriteLine(item));

null我没去掉。用的时候去掉即可。

当然。还有许多办法。比如linq Distinct 等等都可以,看看网上的这个例子:去掉modelList中title重复的内容,不区分大小写

class Program
{
static void Main(string[] args)
{
List<Model> modelList = new List<Model>()
{ new Model() { ID = 1, Title = "abcde" },
new Model() { ID = 2, Title = "ABCDE" },
new Model(){ ID = 3, Title = "AbcdE" },
new Model() { ID = 4, Title = "A" },
new Model() { ID = 5, Title = "a" }
};
Console.Read();
}
}
public class Model
{
public int ID { get; set; }
public string Title { get; set; }
}

解决方案一:这里比较的前提是对象的哈希代码相等。否则不会比较,因为哈希代码不相等。两个对象显然不相等

//定义一个类继承IEqualityComparer接口
public class ModelComparer : IEqualityComparer<Model>
{
public bool Equals(Model x, Model y)
{
return x.Title.ToUpper() == y.Title.ToUpper();
}
public int GetHashCode(Model obj)
{
return obj.Title.ToUpper().GetHashCode();
}
}

调用:

modelList = modelList.Distinct(new ModelComparer()).ToList();

解决方案二:

var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.FirstOrDefault().ID });
modelList = modelList.Where(m => title.Select(mo => mo.ID).Contains(m.ID)).ToList();
foreach (var item in modelList)
{
Console.WriteLine(item.ID + "\t" + item.Title);
}

当然。如果你仅仅比较两个值是否相等。

List<string> li1 = new List<string> { "8", "8", "9", "8", "0", "9" };
li1 = li1.Distinct().ToList();

㈣ 关于List集合中用Set排除重复数据。

没什么问题

privatestaticSetgetList(SetstringList,Strings){
stringList.add(s);
returnstringList;
}

publicstaticvoidmain(String[]args){

SetmyList=newHashSet();
Strings1="aa";
Strings2="bb";
Strings3="cc";
Strings4="dd";
getList(myList,s1);
getList(myList,s2);
getList(myList,s3);
getList(myList,s4);
ListmyNeedList=newArrayList(myList);

}

㈤ 如何在List集合中排除重复的数据

它这个要求也就是让最后输出的结果为[a, c, d, f],把出现一次以后的元素只剩下一个: for (int i = 0; i < list.size() - 1; i++) {//循环遍历集体中的元素for (int j = list.size() - 1; j i; j--) {//这里非常巧妙,这里是倒序的是比较 if (list.get(j).equals(list.get(i))) { list.remove(j);}}} 因为这道题我们的思路是,先循环遍历集合中的每一个元素,再依次用集合中的元素去比对后面的元素,如果有相同的,就在集合中把当前的元素移除掉,那么,重点来了, 你移除了当前的集合,那么

㈥ 如何在List集合中去除重复元素

  1. 通过循环进行删除

    public static void removeDuplicate(List list) {
    for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
    for ( int j = list.size() - 1 ; j > i; j -- ) {
    if (list.get(j).equals(list.get(i))) {
    list.remove(j);
    }
    }
    }
    System.out.println(list);
    }

  2. 通过HashSet删除
    public static void removeDuplicate(List list) {
    HashSet h = new HashSet(list);
    list.clear();
    list.addAll(h);
    System.out.println(list);
    }

    3、删除重复元素,并保持顺序。(我没试)

    public static void removeDuplicateWithOrder(List list) {
    Set set = new HashSet();
    List newList = new ArrayList();
    for (Iterator iter = list.iterator(); iter.hasNext();) {
    Objectelement = iter.next();
    if (set.add(element))
    newList.add(element);
    }
    list.clear();
    list.addAll(newList);
    System.out.println( " remove plicate " + list);
    }

    4、定义一个方法,调用即可。

    publi List<String> getNewList(List<String> li){
    List<String> list = new ArrayList<String>();
    for(int i=0; i<li.size(); i++){
    String str = li.get(i); //获取传入集合对象的每一个元素
    if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果没有则加入
    list.add(str);
    }
    }
    return list; //返回集合
    }

    public class Test{
    public static void main(String[] args){
    ArrayList<String> arr = new ArrayList<String>();
    arr.add("aaa");
    arr.add("bbb");
    arr.add("aaa");
    arr.add("ccc");
    arr = getNewList(arr); //方法去重
    System.out.println(arr);
    }
    }

package com.test;

import java.util.*;public class Test { /**
AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC */
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("AAAA");
list.add("AAAA");
list.add("AAAA");
list.add("BBBB");
list.add("BBBB");
list.add("BBBB");
list.add("CCCC");
list.add("CCCC");
list.add("CCCC");
list.add("DDDD"); new Test().removeDuplicateWithOrder(list);// System.out.println(list); } // 删除ArrayList中重复元素
public static void removeDuplicate(List list) { for (int i = 0; i < list.size() - 1; i++) { for (int j = list.size() - 1; j > i; j--) { if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
} // 方法二:通过HashSet剔除 // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用
public static void removeDuplicate1(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
} // 方法三: 删除ArrayList中重复元素,保持顺序 // 删除ArrayList中重复元素,保持顺序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList(); for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next(); if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println(" remove plicate " + list);
}
}

㈦ JAVA中,如何去掉LIST里的重复元素

最好的办来法是用Set,因为Set里面自存放的数据是不重复的。
如果你不想用Set,那还可以向下面这样处理。

List list_tmp = new ArrayList(); //建立一个用于临时存放不重复list元素的List集合。
for(Object obj:list){
//可以根据需要,在这里加上强制转型。
//如list里面存放的是一个User对象,那么加上User u = (User) obj;
if(!list_tmp.contains(obj)){ //注意contains方法是通过equals方法进行比较的所以你要根据你自己的需要看是否需要重写list对象里面的equals方法。
list_tmp.add(obj);//如果上面加了强制转型,这里需要写list_tmp.add(u);
}
}

㈧ 关于List集合里去除一些重复项问题

class TT {
private int i;

public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}
TT(int i){
this.setI(i);
}
public boolean equals(Object obj) {
if(obj==null||!(obj instanceof TT))
return false;
return ((TT)obj).getI()==this.i;
}
}

list2 .removeAll(list1);

㈨ 如何去除List集合中重复的元素

1、通过循环进行删除

public static void removeDuplicate(List list) {

for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {

for ( int j = list.size() - 1 ; j > i; j -- ) {

if (list.get(j).equals(list.get(i))) {

list.remove(j);}}}

System.out.println(list);}

2、通过HashSet删除

public static void removeDuplicate(List list) {

HashSet h = new HashSet(list);

list.clear();

list.addAll(h);

System.out.println(list);}

(9)集合过滤重复项扩展阅读:

List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引。List接口中增加了一些根据索引操作元素的方法:

void add(int index,E element ) 在列表的指定位置插入该元素。

boolean addAll(int index,Collection c) 将集合c包含的所有元素都插入到List集合的index处。

Object get(int index) 返回集合index索引出的元素。

List额外提供的一个listIterator()方法,提供了专门操作List的方法。

ListIterator接口在Iterator的基础上增加了如下方法:

boolean hasPrevious(): 返回该迭代器关联的集合是否还有上一个元素。

Object previous(): 返回该迭代器的上一个元素。

void add((E e): 在指定位置插入一个元素。

阅读全文

与集合过滤重复项相关的资料

热点内容
液相用溶剂过滤器 浏览:674
纳滤水导电率 浏览:128
反渗透每小时2吨 浏览:162
做一个纯净水工厂需要多少钱 浏览:381
最终幻想4回忆技能有什么用 浏览:487
污水提升器采通 浏览:397
反渗透和不发渗透净水器有什么区别 浏览:757
提升泵的扬程 浏览:294
泽德提升泵合肥经销商 浏览:929
饮水机后盖漏水了怎么办 浏览:953
小型电动提升器 浏览:246
半透膜和细胞膜区别 浏览:187
废水拖把池 浏览:859
十四五期间城镇污水处理如何提质增效 浏览:915
怎么测试空气净化器的好坏 浏览:519
提升泵是干嘛的 浏览:744
布油做蒸馏起沫咋办 浏览:252
广州工业油烟净化器一般多少钱 浏览:204
喜哆哆空气净化器效果怎么样 浏览:424
油烟净化器油盒在什么位置 浏览:582