需要在另一个数组中的数组中查找并存储重复的数字,但不知道如何将副本放在另一个数组中

时间:2017-12-16 16:19:01

标签: java arrays

我在阵列中发现了重复的数字" a"但无法将重复的数据存储在另一个数组中#b; b"。任何帮助非常感谢!

这是我的代码:

public static void main(String[] args) {
    int[] a = {1,2,3,3,5,6,1,7,7};
    int[] b={};


    for (int i = 0; i < a.length; i++) {
        for (int j = i+1; j < a.length; j++) {
            if(a[i]==(a[j])){
                System.out.println(a[j]);

            }

        }
    }       

3 个答案:

答案 0 :(得分:2)

因为结果的长度不知道,我想使用ArrayList而不是数组:

int[] a = {1, 2, 3, 3, 5, 6, 1, 7, 7};
List<Integer> b = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
    for (int j = i + 1; j < a.length; j++) {
        if (a[i] == a[j] && !b.contains(a[j])) {
            b.add(a[j]);
            System.out.println(a[j]);
        }
    }
}
System.out.println(b);//result : [1, 3, 7]

答案 1 :(得分:1)

您也可以尝试使用集合框架在数组中查找重复项:

import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;

public class MyClass {
    public static void main(String args[]) {
        int[] a = {1,2,3,3,5,6,1,7,7};
        Set<Integer> set=new HashSet<Integer>();
        List<Integer> list=new ArrayList<Integer>();
        for(int i:a)    {
            if(!set.add(i))   {
                list.add(i);
            }
        }
        int[] b=new int[list.size()];
        for (int i=0;i<list.size();i++)    {
            b[i] =list.get(i);
        }

    }
}

这里我使用了set不允许重复的事实,如果set.add返回false,这意味着该元素已在集合中可用

答案 2 :(得分:0)

初始化后,我们无法更改 Array 的大小。在这里,我们不知道数组中有多少重复项。

编辑 - 这可能是一个更好的解决方案,我之前的解决方案是抛出ArrayIndexOutOfBoundException,如@YCF_L所示 -

library(cowplot)

xlimits <- c(6, 38)

pmain <- ggplot(data = mpg, aes(x = cty, y = hwy)) + 
  geom_point() +
  xlab("City driving") +
  ylab("Highway driving") + 
  scale_x_continuous(limits = xlimits, expand = c(0, 0)) +
  theme_grey() +
  theme(plot.margin = margin(0, 5.5, 5.5, 5.5))


xhist <- ggplot() + 
  geom_histogram(
    data = mpg,
    aes(x = cty),
    colour = "black",
    binwidth = 1,
    center = 10
  ) +
  scale_x_continuous(limits = xlimits, expand = c(0, 0), breaks = 8:35) +
  labs(x = NULL, y = NULL) + 
  theme(
    axis.text.x = element_text(angle = 90, size=7, vjust=0.5),
    axis.line = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    plot.margin = margin(5.5, 5.5, 0, 5.5)
  )

plot_grid(xhist, pmain, ncol = 1, align = "v", rel_heights = c(0.2, 1))

使用Set-1输出:

  

[1,3,7]
  [1,3,7]

使用Set-2输出:

  

[1,1,1,3,7]
  [1,3,7]