用于对数组进行重复数据删除的 Java 程序

Posted

技术标签:

【中文标题】用于对数组进行重复数据删除的 Java 程序【英文标题】:Java program for de-duplicating an array 【发布时间】:2014-06-25 20:07:29 【问题描述】:

有人可以帮忙写一个高效的java函数吗?

不使用内部排序或去重功能,取一个包含重复的数组 条目并返回一个没有重复的新数组。例如

deduplicate(array(2,5,10,1, “john" “andy", 5, “peter”, “andy”)) 

// 返回 2,5,10,1,“john”, “andy”, “peter”

【问题讨论】:

那些不是 Java 数组。 javascript 您应该向我们展示您迄今为止所做的尝试,然后我们可以帮助您朝着正确的方向前进。 是否必须是相同的相对顺序? 对数组进行排序将其转换为数组列表 && 以删除数组的重复项将其转换为“SET” @NullSoulException 我认为这将被视为“使用内部重复数据删除功能” 【参考方案1】:

从基于散列的容器开始,例如HashMap,对于数组中的每个元素,首先检查它是否存在于容器中,如果不存在则添加它。完成后将容器中的所有元素作为数组返回。

这将是高效的,因为每次检查元素是否在容器中都是 O(1),每次插入都是 O(1)。对数组中的每个元素执行此操作是 O(n),然后在最后再次检索它们也是 O(n),因此最终得到的解决方案是 O(n)。

我把实际的实现留给你作为练习。

【讨论】:

A (Linked)HashSet 会更合适。在添加之前检查它是否存在是没有用的,因为 Set 不会添加已经存在的元素。所以归结为new LinkedHashSet<>(Arrays.asList(array)).toArray() @JBNizet 我已经很久没有接触过 Java(我是 C# 人)。不知道可用的特定容器类型。在内部,我假设(Linked)HashSet 在添加之前必须检查项目是否存在。 投了反对票,因为当 OP 甚至无法正确命名他应该编程的语言时,尝试回答这个问题是没有用的——他的示例调用肯定不是 java,而是可能是 javascript。请不要试图猜测他的意思,等待OP澄清他的问题。鉴于他明显缺乏基本的编程知识,我也怀疑 OP 是否能够理解像您这样的答案;效率部分可能就在他头上。 @l4mpi 够公平的。我想给出一个通用的解决方案,以便他可以自己尝试并在尝试的同时学习一些东西。

以上是关于用于对数组进行重复数据删除的 Java 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何去掉一个数组的重复元素:数组去重

从数组中删除重复的对象

mysql中删除重复数据

使用 Java 实现云中的重复数据删除

给定一个未排序的数组,如何删除重复项然后对其进行排序?

Java集合那些事