在Java中组合2个数组
我需要创建一个程序,不仅要将2个数组放在一起,还要避免在数组上重复打印两次数字 例如:在Java中组合2个数组,java,Java,我需要创建一个程序,不仅要将2个数组放在一起,还要避免在数组上重复打印两次数字 例如: 1,2,3,4,5//Array 1 5,6,7,8,4//Array 2 1,2,3,4,5,6,7,8//同时排列1和2 我听说Hashshet可以帮助执行此操作,但我不确定它是否有效。我刚开始编程,所以我对这些东西了解不多 希望有人能帮我 谢谢HashSet hs=newhashset(); 对于(int i=0;i步骤1:初始化第三个新数组 步骤2:迭代两个数组并将所有元素存储在第三个数组中 步骤3:
1,2,3,4,5//Array 1
5,6,7,8,4//Array 2
1,2,3,4,5,6,7,8//同时排列1和2
我听说Hashshet可以帮助执行此操作,但我不确定它是否有效。我刚开始编程,所以我对这些东西了解不多
希望有人能帮我
谢谢HashSet hs=newhashset();
对于(int i=0;i步骤1:初始化第三个新数组
步骤2:迭代两个数组并将所有元素存储在第三个数组中
步骤3:对第三个数组排序使用以下简单代码:
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
List arr1=new ArrayList();//1 2 3 4 5
List arr2=new ArrayList();//5 6 7 8
Set res=新的HashSet();
res.addAll(arr1);
res.addAll(arr2);
System.out.println(res);//12345678
联合收割机
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);
然后将所有数组值添加到集合中。这将减少重复值。我希望这对您有所帮助
我将给你一个通用算法,然后让你自己编写代码
创建一个新数组(称为结果),其大小等于array1.length+array2.length
创建类型为
在遍历数组时,在将数字复制到“结果”之前,请检查hashmap中是否存在该数字(如果布尔值为true,则该数字存在)。如果不存在,则可以安全地复制到结果中,将该数字处的布尔值翻转为true
当到达第一个数组的末尾时,将第二个循环的索引变量设置为第一个数组的长度,然后重复第三步
如果您不知道HashMap,这是如何初始化它的。Get()将通过其键检索元素,put()将在您指定的键处放置一个值(在您的情况下,该值将是数字)
HashMap=newHashMap();
添加arraylist 1
,arraylist 2
并生成单个arraylistarraylist 3
现在将其转换为
Set Unique_set = new HashSet(Arraylist3);
在唯一集合中,您将获得唯一元素
注
ArrayList允许复制值。Set不允许复制值。希望您的问题得到解决。如果需要删除重复项并保留插入项目的顺序,您可以使用:
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 Set=newlinkedhashset();
for(int i=0;i
如果不需要保留插入顺序,可以将集合的实现更改为:
Set Set=newhashset();
试试这个:
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());
}
字符串arr[]={“1”、“2”、“3”、“4”};
字符串arr2[]={“1”、“2”、“3”、“4”、“5”};
List numList=newarraylist(Arrays.asList(arr));
Collections.addAll(numList,arr2);
Set aSet=新哈希集(numList);
迭代器迭代器=aSet.Iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
您走的是正确的道路,只需对其进行编码!因此这取决于您到底喜欢做什么。是否要消除重复项,是否要对它们进行排序,…类数组、集合和接口集合是很好的起点请看一下这些链接:这看起来像是重复的问题请看链接这仅在以下情况下才有用他希望对数组进行排序(我假设他没有)。此外,它不会消除重复项,只会使它们更容易找到。在“合并排序”中,您可以学习如何组合多个数组。此外,它还表明他做了一些事情来对它们进行排序,以便使用“合并排序”来做同样的事情,但您没有消除重复项,而且您正在破坏数组的顺序。她可以检查是否存在du我意识到这一点,但它仍然不能保持元素的顺序。你在排序数组,他没有说他需要排序。这能保持元素的顺序吗?据我所知,HashSet在迭代时不能保证顺序不,这不能保持顺序。如果你需要如果没有顺序,请尝试LinkedHashSet。您也可以使用TreeSet,它将按递增顺序对所有元素进行排序。
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<Integer> set = new HashSet<Integer>();
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());
}