0

我需要创建一个程序,不仅将 2 个数组放在一起,而且还要避免打印两次在数组上重复的数字。

例如:

1,2,3,4,5 //Array 1

5,6,7,8,4 //Array 2

1,2,3,4,5,6,7,8 //Array 1 & 2 together

我听说 Hashshet 可以帮助执行此操作,但我不确定它是否有效。我刚开始编程,所以我不太了解这些东西。

希望有人可以帮助我。

谢谢

4

9 回答 9

1
HashSet<Integer> hs = new HashSet<Integer>();

for(int i=0;i<arr1.length;i++){
    hs.add(arr1[i]);
}

以同样的方式处理第二个数组。 hs不会包含任何重复值。

于 2013-10-08T05:41:56.010 回答
0

第 1 步:初始化第三个新数组

第 2 步:迭代两个数组并将所有元素存储在第三个数组中

第 3 步:对第三个数组进行排序

于 2013-10-08T05:42:11.143 回答
0

使用以下简单代码:

List<Integer> arr1=new ArrayList<>();   //1 2 3 4 5
List<Integer> arr2=new ArrayList<>();   // 5 6 7 8
Set<Integer> res=new HashSet<>();
res.addAll(arr1);
res.addAll(arr2);
System.out.println(res); //1 2 3 4 5 6 7 8
于 2013-10-08T05:42:14.730 回答
0

结合

    int lengthA = arrayA.length;
    int lengthB = arrayB.length;
    Sample[] result = new Sample[arrayA + arrayB];
    System.arraycopy(arrayA, 0, result, 0, lengthA);
    System.arraycopy(arrayA, 0, result, lengthA, lengthB);

然后将所有数组值添加到 Set 中。它将减少重复值。

于 2013-10-08T05:42:46.817 回答
0

我将为您提供通用算法,然后由您自己编写代码。

  1. 创建一个大小等于的新数组(称为结果)array1.length+array2.length
  2. 创建类型的哈希图<int, boolean>
  3. 在遍历您的数组时,在将数字复制到“结果”之前检查该数字是否存在于哈希图中(如果布尔值为真,则它存在)。如果不能安全地复制到结果中,则将该数字处的布尔值翻转为 true。
  4. 当您到达第一个数组的末尾时。将第二个循环的索引变量设置为等于第一个数组的长度并重复第三步。

如果你不知道 HashMap 这是如何初始化它。Get() 将通过其键检索元素, put() 将在您指定的键处放置一个值(在您的情况下为数字)。

<!-- language: java -->
HashMap<int,boolean> map = new HashMap<int,boolean>();
于 2013-10-08T05:47:43.550 回答
0

添加ArrayList1ArrayList2生成一个 Single arraylist ArrayList3

现在将其转换为

Set Unique_set = new HashSet(Arraylist3);

在独特的集合中,您将获得独特的元素。

笔记

ArrayList允许重复值。Set不允许值重复。希望您的问题得到解决。

于 2013-10-08T05:49:49.997 回答
0

如果您需要删除重复项并保留插入项目的顺序,则 可以使用LinkedHashSet :

Set<Integer> set = new LinkedHashSet<Integer>();

for(int i = 0;i < firstArray.length; i++){
    set.add(firstArray[i]); 
}

// set now contains 1,2,3,4,5

for(int i = 0;i < secondArray.length; i++){
    set.add(secondArray[i]);
}

// set now contains 1,2,3,4,5,6,7,8

如果您不需要保留插入顺序,可以将 set 的实现更改为HashSet

Set<Integer> set = new HashSet<Integer>();
于 2013-10-08T05:50:12.593 回答
0

试试这个:

    String arr[] = {"1", "2", "3", "4"};
    String arr2[] = {"1", "2", "3", "4", "5"};
    List<String> numList = new ArrayList<String>(Arrays.asList(arr));
    Collections.addAll(numList, arr2);
    Set<String> aSet = new HashSet<String>(numList);
    Iterator iterator = aSet.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
于 2013-10-08T05:57:01.780 回答
-1

我希望它会帮助你

归并排序算法

合并排序代码

在此处输入图像描述

于 2013-10-08T05:45:09.683 回答