java - Java 中需要方法仅返回匹配的数字

标签 java set duplicates

/**
 * This method should compare two Sets of Integers and return a new 
 * Set of Integers that represent all of the matching numbers.
 * 
 * For example, if the lotteryNumbers are (4, 6, 23, 34, 44, 45) and
 * the userNumbers are (4, 18, 22, 24, 35, 45) then the returned Set
 * of Integers should be (4, 45)
 * 
 * @param lotteryNumbers the lottery numbers that were randomly generated.
 * @param userNumbers the user picked numbers that were picked in the console.
 * @return Set of matched numbers
 */
public Set<Integer> playLottery (Set<Integer> lotteryNumbers, Set<Integer> userNumbers)  {
    Set<Integer> listOfRandom = new HashSet<Integer>(lotteryNumbers);
    listOfRandom.equals(lotteryNumbers);
    listOfRandom.addAll(lotteryNumbers);

    Set<Integer> s = new HashSet<Integer>(userNumbers); 
    s.equals(userNumbers);
    s.addAll(userNumbers);

    Set<Integer> e = new HashSet<Integer>(); 

    for (Integer integer : userNumbers) {
        if (userNumbers.equals(lotteryNumbers));
        userNumbers.remove(lotteryNumbers);
    }
    return userNumbers;
}

到目前为止,它仅返回所有用户编号。我假设 remove() 方法会删除返回的任何重复值。我需要这个来通过我的单元测试。

最佳答案

retainAll()这就是您正在寻找的。

Set<Integer> lotteryNumbers = new TreeSet<Integer>();
// ... Populate it with 4, 6, 23, 34, 44, 45 
Set<Integer> userNumbers = new TreeSet<Integer>();
// ... Populate it with 4, 18, 22, 24, 35, 45
userNumbers.retainAll(lotteryNumbers);
// userNumbers is now just (4, 45)

关于java - Java 中需要方法仅返回匹配的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885433/

相关文章:

java - Spring @PropertySource动态设置路径

java - 使用 Java 更改现有文件的编码?

java - 从对象获取信息(JAVA)

android - 检索联系人时出现重复联系人问题

java - 使用 fargate 作为 worker 的 AWS Step Functions 工作流程 - 如何将输出发送到下一步?

java - 调用 C 子例程时出现 JNI 错误

java - 如何将值添加到 Map 中的 Set?

python - C++ 中的高效集合并集和交集

sql - 删除基于多列的重复记录

c - 最近在 C 中进行高效的集合成员测试以进行重复数据删除?