gpt4 book ai didi

java - TreeSets 跟进

转载 作者:行者123 更新时间:2023-12-01 13:09:10 28 4
gpt4 key购买 nike

我正在尝试执行一个小程序,但无法真正完全理解它。在某些地方,我认为它的作用是错误的,但我知道 where =[] 如果有人能指出我正确的方向,我将不胜感激。

import java.util.*;

public class Duplicates {

//Here we have a main method


public static void main(String[] args)
{

String[] words = args[0].split(" ");
Set<String> uniques = new TreeSet<String>();
Set<String> duplicates = new TreeSet<String>();

for (String s : words) {
if (!uniques.add(s)) {
duplicates.add(s);
}
}

uniques.removeAll(duplicates);
System.out.println("Unique words "+uniques);
System.out.print("Duplicate words "+duplicates);
}

我理解它的作用(有点),但我不确定当你得到一个独特的单词时会发生什么。正如在循环中所说的那样 if (!unique.add(s)) 这样只会处理重复项...?然后,当我们进入 if 语句时,它正在处理 duplicates.add(s) 。所以,我不明白如何将独特的东西添加到独特的集合中?

最佳答案

uniques.add(s))

Adds the specified element to this set if it is not already present http://docs.oracle.com/javase/7/docs/api/java/util/Set.html

该方法返回一个 boolean 值,如果成功则返回 true,如果失败则返回 false。感叹号反转 boolean 值,因此如果它返回 false 那么!使其为真,并且可以继续将其添加到重复集中,如果重复集中已存在,则会失败,从而为您提供第一组中唯一的一组唯一项目,并将重复项转储到第二组中,但仅计算每个唯一字符串的第一个重复项。

重复集不应该是一个集,因为它不会计算总共有多少个重复项。

Suppose you inputted "abc" "def" "def"

您将获得 2 个独特的项目和 1 个重复的项目。

But if you inputted "abc" "abc" "abc"

您将获得 1 个唯一项和 1 个重复项,因为第二次尝试插入重复项时会失败,因为集合永远不会让您两次添加相同的内容。

但是,您的示例的目的似乎是输出仅在唯一集中输入一次的单词,并输出在重复集中输入多次的单词。

将 string[] 行更改为此

String[] words = new String[] { "a", "a", "b", "c" };

你的输出将是

Unique words [b, c]

Duplicate words [a]

这是因为removeAll 方法会删除唯一集中重复集中的任何项目。

关于java - TreeSets 跟进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23029778/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com