java两个数组组合_用Java组合2个数组

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

希望有人可以帮助我。

谢谢

你是在正确的道路上,只需编码!

所以这取决于你想做什么。 你想要消除重复,你想要订购它们......类Arrays,Collections和Interface Collection是很好的起点

看看这些链接:stackoverflow.com/questions/80476/… 和stackoverflow.com/questions/4697255/combine-two-integer-arrays

这看起来像一个重复的问题,请看链接stackoverflow.com/questions/5818057/union-of-2-arrays-in-java

HashSet hs = new HashSet();

for(int i=0;i

hs.add(arr1[i]);

}

以同样的方式做第二个数组。

hs不包含任何重复值。

这是否维持元素的顺序? 根据我的理解,HashSet在迭代时不保证顺序

不,这不保持秩序。 如果您需要维护订单,请尝试使用LinkedHashSet

您也可以使用TreeSet,它将按递增顺序对所有元素进行排序。

试试这个:

String arr[] = {"1","2","3","4"};

String arr2[] = {"1","2","3","4","5"};

List numList = new ArrayList(Arrays.asList(arr));

Collections.addAll(numList, arr2);

Set aSet = new HashSet(numList);

Iterator iterator = aSet.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

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

Set set = new LinkedHashSet();

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 set = new HashSet();

添加ArrayList1,ArrayList2并生成单个arraylist ArrayList3。

现在将其转换为

Set Unique_set = new HashSet(Arraylist3);

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

注意

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

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

创建一个大小等于array1.length+array2.length的新数组(称为结果)

创建类型为的哈希映射

在遍历数组时,在将数字复制到"结果"之前检查数字是否存在于hashmap中(如果布尔值为true则存在)。如果不是您可以安全地复制到结果中,请将该数字的布尔值翻转为true。

当你到达第一个数组的末尾时。将第二个循环的索引变量设置为等于第一个数组的长度,然后重复步骤3。

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

HashMap map = new HashMap();

我希望它能帮助你

合并排序算法

合并排序代码

59e078c58435f5072ff1e9cd599dfe99.gif

这只有在他想要对数组进行排序时才有用(我假设他没有)。 此外,它不会消除重复,它只是使它们更容易找到。

在合并排序中你学会了如何组合多个数组。而且它还表明他做了一些事情来对它们进行排序,这样他就可以使用合并排序做同样的事情

但是你并没有消除重复,而是破坏了数组的顺序

他可以检查是否有重复的项目并转到下一个项目

我意识到这一点,但它仍然没有维持元素的顺序。 你正在对数组进行排序,他没有说他需要对它进行排序。

结合

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中。它会减少重复值。

使用以下简单代码:

List arr1=new ArrayList<>();   //1 2 3 4 5

List arr2=new ArrayList<>();   // 5 6 7 8

Set res=new HashSet<>();

res.addAll(arr1);

res.addAll(arr2);

System.out.println(res); //1 2 3 4 5 6 7 8

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

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

第3步:排序第三个数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值