java 集合问题找出两个集合中相同的元素并打印出来

把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

http://dongwei.iteye.com/blog/230445