package com.huawei.test;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
public class FindDups
{
/**
* 去重1(重复数据只保留一条)
* 去重后保持原有顺序
* @param arr 数组
*/
public static void findDup1(String[] arr)
{
Collection<string> noDups = new LinkedHashSet<string>(Arrays.asList(arr));
System.out.println("(LinkedHashSet) distinct words: " + noDups);
}
/**
* 去重2(重复数据只保留一条)
* 去重后顺序打乱
* @param arr 数组
*/
public static void findDup2(String[] arr)
{
Collection<string> noDups = new HashSet<string>(Arrays.asList(arr));
System.out.println("(HashSet) distinct words: " + noDups);
}
/**
* 去重3(重复数据只保留一条)
* 去重后顺序打乱
* @param arr 数组
*/
public static void findDup3(String[] arr)
{
Set<string> s = new HashSet<string>();
for (String a : arr)
{
if (!s.add(a))
{
System.out.println("Duplicate detected: " + a);
}
}
System.out.println(s.size() + " distinct words: " + s);
}
/**
* 去重4(相同的数据一条都不保留,取唯一)
* 去重后顺序打乱
* @param arr 数组
*/
public static void findDup4(String[] arr)
{
Set<string> uniques = new HashSet<string>();
Set<string> dups = new HashSet<string>();
for (String a : arr)
{
{
if (!uniques.add(a))
dups.add(a);
}
}
// Destructive set-difference
uniques.removeAll(dups);
System.out.println("Unique words: " + uniques);
System.out.println("Duplicate words: " + dups);
}
/**
* 测试主方法
* @param args 参数
*/
public static void main(String[] args)
{
String[] arr = new String[] {"i", "think", "i", "am", "the", "best"};
findDup1(arr);
findDup2(arr);
findDup3(arr);
findDup4(arr);
}
}
运行结果:
(LinkedHashSet) distinct words: [i, think, am, the, best]
(HashSet) distinct words: [think, am, best, the, i]
Duplicate detected: i
5 distinct words: [think, am, best, the, i]
Unique words: [think, am, best, the]
Duplicate words: [i]</string></string></string></string></string></string></string></string></string></string>
分享到:
相关推荐
hashSet底层去重原理
3:HashSet去重(无序) 此方法的实现代码较为简洁,但缺点是 HashSet 会自动排序,这样新集合的数据排序就和原集合不一致了 4:TreeSet去重(无序) 比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 ...
### 实现方法:使用HashSet去重 在提供的代码片段中,使用了`HashSet`来实现`JSONArray`的去重操作。下面详细介绍这一过程: ```java import org.json.JSONArray; import java.util.HashSet; import java.util....
2. 使用HashSet去重 使用HashSet可以去重List对象列表。HashSet是一个不允许重复元素的集合,添加元素时,会自动忽略重复元素。 ```java List<Student> list = new ArrayList(); // 添加元素到list Set<Student> ...
### 实现方法:利用HashSet去重 在Java中,`HashSet`类是基于哈希表实现的一个集合类,它不允许存储重复的元素。利用这个特性,我们可以轻松地去除字符串数组中的重复元素。 下面是一个详细的实现步骤: 1. **...
此外,本文还会涉及到使用HashMap进行批量替换,并且利用HashSet去重。 首先,让我们从字符串的截取开始。在Java中,可以使用String类的substring方法来截取指定范围的子字符串。具体来说,substring(int ...
2. **HashSet去重**: `std::unordered_set`(或HashSet)是C++标准库中的一个容器,它提供了一种高效的方式来存储不重复元素。在处理数据规律优化时,可能需要消除重复的数据以避免影响结果,HashSet因其O(1)的平均...
1. 使用HashSet去重:HashSet是Java集合框架中的一个无序、不重复元素的集合。当我们尝试将一个列表添加到HashSet中时,由于HashSet不允许重复元素,它会自动过滤掉重复项。因此,我们可以通过以下方式去重: ```...
6. **使用HashSet去重并更新控件**:创建一个HashSet,然后将控件中的所有项添加到HashSet中。由于HashSet不允许重复,所以重复项会被自动去除。然后,清空控件,重新添加HashSet中的元素,这样就实现了去重。 7. *...
1. **HashSet去重**: 使用HashSet进行去重是最常见且高效的方式。HashSet是一个不允许有重复元素的集合,它不保证元素的顺序,但提供了添加、删除和查找元素的快速操作。我们可以将List转换为HashSet,然后再转回...
【ArrayList与HashSet去重】 在ArrayList中去重,可以借助HashSet。首先创建一个HashSet,然后将ArrayList中的元素逐个添加到HashSet中。由于HashSet不允许重复元素,所以重复的元素在添加过程中会被自动过滤掉,...
再如第2题“两数之差”,要求找出数组中唯一的重复元素,我们可以利用Java的特性,借助HashSet去重,再遍历一次数组找出重复项。以下是Java实现: ```java public int singleNumber(int[] nums) { Set<Integer> ...
#### 三、HashSet去重原理 在`HashSet`中保证元素不重复的核心在于元素的`hashCode()`和`equals()`方法。为了确保元素不重复,需要覆盖这些方法。 以`Student`类为例,假设我们要将`Student`对象存储在`HashSet`中...
- **HashSet去重**:通过重写`hashCode()`和`equals()`方法,实现对象的唯一性。 8. **字典排序算法**:使用Tree数据结构(如TreeSet或TreeMap)进行排序,适用于需要保持元素顺序的场景。 9. **界面复用**: - ...
4.不重复的3位数算法:该算法用于生成不重复的3位数,通过随机数生成和HashSet去重,实现不重复的3位数生成。该算法的时间复杂度为O(n),空间复杂度为O(n)。 5.水仙花数算法:该算法用于判断一个数是否为水仙花数,...
35. HashSet去重:HashSet会自动去重,所以添加相同的元素后,size为2。 36. HashMap操作:最后一个put操作会覆盖之前的值,所以输出"ls"。 37. 启动线程:通过`start`方法启动线程。 38. String对象创建:创建了...
这样,HashSet通过HashMap实现了元素的存储和去重功能。 ### HashSet与Map的关系 HashSet并不是直接继承自Map,而是通过内部的HashMap实现Set的功能。HashSet通过调用HashMap的方法来完成添加、删除、查找等操作。...