把1-100 数随机放入到 数组长度为[97] 并且这些元素不能重复,找出未输入进数组的数!
package set;
import java.util.HashSet;
/*
作业: 把1-100 数随机不重复放入到 数组[97] ,找出未存入的数!
*/
public class Test5 {
public static void main(String[] args) {
// 1.创建 一个 HashSet集合,保证元素唯一性
HashSet ha=new HashSet();
while(ha.size()<=96){
ha.add((int)(Math.random()*100+1));
}
System.out.print("随机存放的集合为:"+ha);
//定义一个数组,数组里面的元素是1--100
int[] arr=new int[100];
for (int i = 0; i < arr.length; i++) {
arr[i]=i+1;
}
// 检查 集合 ha 中是否包含数组Arr
for (int j = 0; j < arr.length; j++) {
if(!ha.contains(arr[j])){
System.out.println("未存入的数是:"+arr[j]);
}
}
http://201204075811.iteye.com/blog/1731178
生成1-100的随机数97个,放在list1和数组中,通过list1去重,list1和数组的元素相同,定义list2存放1-100,然后list2.removeAll(list1)就行了
鉴于你取得数数值很小,在1-100以内,你可以用一个101大小的数组标记哪些被取出来了。1表示取出来了,0表示还没取出。然后你再遍历标记数组,
就可以求出哪些没有被取出来过。而对于“集合问题找出两个集合中相同的元素并打印出来”可以Set容器,把第一个集合放进Set容器,然后遍历第二
个集合,如果发现遍历的这个数被Set contains,那么就是重合的。
创建一个有100个元素的hashset,保存1到100。遍历数组,然后删除hashset里相同的元素。遍历完数组后hashset里剩下的元素就是答案。时间复杂度为O(n) ,n为数组长度
直接用集合的api的话,就比较容易了,就用Java的ArrayList,遍历一个,判断每个值是否在另一个集合中集合的contains方法。
回复楼上的几位我知道思路 遍历我也写出来了 只是除去相同元素 没有搞定谢谢大家我不要思路我要代码!!!!
apache 下面有可以用的jar, 直接用 CollectionUtils.intersection 方法
https://commons.apache.org/proper/commons-collections/javadocs/api-release/org/apache/commons/collections4/CollectionUtils.html