java - 如何更改数组以使重复元素仅显示一次?

标签 java arrays

这与仅删除重复项略有不同(您可以使用LinkedHashSet来完成)。如果我在 Java 中有一个这样的数组,它是从 byte[] 数组获取的,然后转换为 String 数组:

[0,0,0,0,1,1,1,1,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0]

有没有办法将其更改为这样的内容:

[0, 1, 0, 2, 3, 0]

我尝试过使用 HashSetLinkedHashSet,但它没有达到我想要的效果。即使技术上是重复的,不同的 0 组也会保留。非常感谢!

最佳答案

您可能希望循环遍历元素并将不连续的重复元素复制到新集合中:

public class Tester {

    public static void main(String[] args){
         int[] values = {0,0,0,0,1,1,1,1,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0};

         List<Integer> output = new ArrayList<Integer>();
         if(values.length > 0){
            int previous = values[0];
            output.add(previous);
            for(int value : values){
                if(previous != value){
                    output.add(value);
                }
                previous = value;
            }
         }
         System.out.println(output); // [0, 1, 0, 2, 3, 0]
    }
}

关于java - 如何更改数组以使重复元素仅显示一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641549/

相关文章:

java - boolean 逻辑 - 比较三个 boolean 值

java - 带有比较方法的冒泡排序未运行

c - realloc 2 dim 数组的段错误但输出正确?

c# - 如何按数组中指定索引处的元素对数组列表进行排序

java - 如何实现LuaJ暂停?

java - 长的快速按位运算

python - Numpy:沿轴应用具有不同索引的输入数组

javascript - 在将数组推送到数组并像对象一样分配键值对之后,数组的长度是多少

java - 坚持测试一种方法

java - 如何在 Spring MVC 中将数据库中的数据存储到字段中