用Java组合2个数组

Combine 2 arrays in Java

我需要创建一个程序,不仅可以将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可以帮忙执行此操作,但我不确定它是否有效。 我刚刚开始编程,所以我不知道很多这样的东西。

希望有人可以帮助我。

谢谢


1
2
3
4
5
HashSet<Integer> hs = new HashSet<Integer>();

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

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


试试这个:

1
2
3
4
5
6
7
8
9
    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());
    }


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

1
2
3
4
5
6
7
8
9
10
11
12
13
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:

1
Set<Integer> set = new HashSet<Integer>();

添加ArrayList1ArrayList2并生成单个arraylist ArrayList3

现在将其转换为

1
Set Unique_set = new HashSet(Arraylist3);

在独特的设置中,您将获得独特的元素。

注意

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


我将给你一般的算法,我会留给你编码。

  • 创建一个大小等于array1.length+array2.length的新数组(称为结果)
  • 创建类型为的哈希映射
  • 在遍历数组时,在将数字复制到"结果"之前检查数字是否存在于hashmap中(如果布尔值为true则存在)。如果不是您可以安全地复制到结果中,请将该数字的布尔值翻转为true。
  • 当你到达第一个数组的末尾时。将第二个循环的索引变量设置为等于第一个数组的长度,然后重复步骤3。
  • 如果你不知道HashMap,这是如何初始化它。 Get()将通过其键检索元素,put()将在您指定的键上放置一个值(在您的情况下将是数字)。

    1
    2
    <!-- language: java -->
    HashMap<int,boolean> map = new HashMap<int,boolean>();

    我希望它能帮助你

    合并排序算法

    合并排序代码

    enter image description here


    结合

    1
    2
    3
    4
    5
        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中。它会减少重复值。


    使用以下简单代码:

    1
    2
    3
    4
    5
    6
    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

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

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

    第3步:排序第三个数组