当前位置: 首页 > 知识库问答 >
问题:

如何删除所有重复,如果它是一个连续的位置?

郏博瀚
2023-03-14

如果它们在数组中的连续位置,我希望能够删除所有重复项。例如,我有这个数组:

[1,2,2,3,2,5,1,1,6,1]

现在,我想删除所有重复项,如果它们处于相同的位置。最后,移除元素后,最终的数组将如下所示:

[1,2,3,2,5,1,6,1]

很明显,如果它处于下一个位置,我们可以看到我们正在移除它。

注意:我不想只使用整数。我希望它适用于所有对象。此外,我不想删除所有重复项。仅当其处于以下位置时,才能将其拆下。

那么,如何使用java或kotlin实现这一点呢。

共有3个答案

魏俊茂
2023-03-14
val list = listOf(1,2,2,3,2,5,1,1,6,1)
// if list is empty then result is empty list
val mutableList = mutableListOf(list.first())
list.forEach {
    if (it != mutableList.last()) {
        mutableList.add(it)
    }
}
println(mutableList.joinToString { it.toString() })
申屠飞
2023-03-14

如果需要Java方法执行此操作:

我不知道Java中有什么方法可以方便地实现这一点。你自己就可以实现这个逻辑。尝试如下所示:

int[] a = ... // whatever initial array value
List<Integer> b = new ArrayList<Integer>(); // final array after processing

b.add(a[0]);

for(int i = 1; i < a.length; ++i) if(a[i] != a[i-1]) b.add(a[i]);

b应存储所需内容。

申颖逸
2023-03-14
val list = listOf(1, 2, 2, 3, 2, 5, 1, 1, 6, 1)

val result = list.filterIndexed { index, i -> 
  if (index > 0) i != list[index - 1] else true
  // or: if (index < list.size - 1) i != list[index + 1] else true
}

println(result)

编辑,对于数据标量类型和数据类:

fun <T : Any> List<T>.filterConsecutiveDuplicates() =
  filterIndexed { index, i -> if (index < size - 1) i != this[index + 1] else true }

val list = listOf(1, 2, 2, 3, 2, 5, 1, 1, 6, 1)
val list2 = list.filterConsecutiveDuplicates()

data class O(val name: String)
val objects = listOf(O("A"), O("A"), O("B"), O("A"), O("B"), O("C"), O("C"), O("A"))
val objects2 = objects.filterConsecutiveDuplicates()
 类似资料:
  • 问题内容: 我已经编写了将Cookie保存在JavaScript中的代码。现在,无论我分配的值如何,都需要清除cookie。 是否有任何脚本模块可删除Javascript生成的所有cookie ? 我的示例代码: 我还能如何清除所有cookie? 当我在网络服务器上测试代码时会出现任何问题吗? 问题答案: 从表面上看,它看起来还不错-如果您调用从中读取的每个cookie ,那么所有cookie都将

  • 我有一个字符串,其中包含重复出现的短语,或者它甚至可能是一个连续出现多次的单词。 尝试了各种方法,但找不到更好的节省时间和空间的方法。 这是我尝试过的方法 Groupby() re 在我的情况下,他们两个似乎都不起作用 我的预期结果: 这些是我提到的一些帖子 有没有办法删除字符串中重复和连续的单词/短语?-不工作 我怎么能删除重复的字在一个字符串与Python?-工程部分,但需要一个最佳的方式为大

  • 我希望停止并移除正在运行的容器。 总回收空间:0B返回结果 为什么会这样

  • 问题内容: 我将如何使用python检查列表并删除所有重复项?我不需要指定重复项是什么- 我希望代码找出是否存在重复项,如果有则将其删除,每个重复项仅保留一个实例。如果列表中有多个重复项,它也必须起作用。 例如,在下面的代码中,列表lseparatedOrbList有12个项目-一项被重复六次,一项被重复五次,并且只有一个实例。我希望它更改列表,因此只有三项-每一项,并且它们之前出现的顺序相同。我

  • 我构建了一个使用BingAPI下载数据集的代码。当我在终端上运行它时,它返回以下错误: 所以我升级了Numpy,但没有用 那么我该怎么做呢?

  • 问题内容: 如何从MySQL表中删除所有重复数据? 例如,具有以下数据: 我会使用,如果它是一个查询。 我该怎么做才能只删除重复项并仅保留每个记录一个? 问题答案: 编辑者警告:此解决方案的计算效率低下,可能会降低大型表的连接。 注意:您 需要 首先在表的 测试副本 上执行此操作! 完成此操作后,我发现,除非也包含,否则它将删除表中的每一行。 如果要使行的值保持最低,请执行以下操作: 如果要保留最