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去除重复值原理实例解析,具有一定借鉴价值,需要的朋友可以参考下。
在list集合中输入元素,去除重复的元素并输出 1.使用for i循环去重 2.使用迭代器去重 3.使用HashSet特性去重
set集合是无序的相较于list集合是没有下标的,hashset底层去重,与hashCode、equals方法相关,排序的元素不是String,而是对象Person
ZTE 2020 傅里叶,添加数据规律优化后的版本 c++ 优化后二阶段的结果 i5-4210u:3s, i7-8700:1.5s DFS搜索路径、剪枝、set去重。
1. 哈希表法(HashSet) 这种方法的核心思想是使用一个哈希表(在Java中是HashSet)来存储已经访问过的元素。遍历链表,对于每个元素,检查它是否已经在哈希表中。如果不在,将其添加到哈希表中,并保留在链表中;...
Java——HashMap HashMap 底层: 哈希表存储(数组+链表+红黑树) 特点: 查询,增删效率高,但是无序,存储键值对的值 去重: 根据key做去重,根据key计算桶的位置 扩容: 初始容量: 默认初始用量为16 ...HashSet Has
- 常见实现类有HashSet、TreeSet和LinkedHashSet等。 3. Queue(队列): - 以队列的方式存储元素,遵循先进先出(FIFO)的原则。 - 可以在队列的两端进行操作,即添加元素到队尾或移除队首元素。 - 常见实现类有...
//通过题目可知要求的是不同的非空子串,set方法可以去重,set方法有两个子方法,一个是HashSet,另一个是TreeSet。 //subString(i,j)是求字符串的子串从下标 i 开始,到 j 结束。类似于指针移动。 简谈HashSet和...
遍历这个List输出,之后利用C#的另一个容器HashSet为这个List去重。 这个程序的代码如下,其实以上所有的东西都在以前的文章说过。这主要是将这种思想写成C#语言而已。 关于正则表达式可以参考:《js利用正则...
HashMap与HashSet根据对象的HashCode判断是否相等,所以如果存入两个值相等的对象,不一定会起到去重的效果 #332. 重新安排行程:欧拉图 #841. 钥匙和房间:图遍历 树: #226. 翻转二叉树:DFS #110. 平衡二叉树 #...