Java 哈希集实现输出

Java 哈希集实现输出,java,Java,对于这段代码,我被要求解释输出与输入的区别: 差异是否与传入的字符串对象和返回的字符串文本有关 import java.util.*; public class C { public static void main(String[] args) { Set<String> s = new HashSet<String>(); for (String a : args) if (!s.add(a))

对于这段代码,我被要求解释输出与输入的区别:

差异是否与传入的字符串对象和返回的字符串文本有关

import java.util.*;

public class C {
    public static void main(String[] args) {
        Set<String> s = new HashSet<String>();
        for (String a : args)
            if (!s.add(a))
                System.out.println("here: " + a);

        System.out.println(s.size() + " there: " + s);
    }
}
import java.util.*;
公共C类{
公共静态void main(字符串[]args){
Set s=新的HashSet();
for(字符串a:args)
如果(!s.add(a))
System.out.println(“此处:+a”);
System.out.println(s.size()+“there:”+s);
}
}

如果
哈希集中存在具有相同内容的字符串,则
add(..)
函数返回false(并且显然没有添加副本)。因此,如果
参数中存在重复字符串,则
if(!s.add(a))
将为真
s.size()如果
HashSet
中存在具有相同内容的字符串,则
add(..)
函数返回false(并且显然没有添加重复项)。因此,如果
参数中存在重复字符串,则
if(!s.add(a))
将为真
s.size()第一个输出将按传递顺序打印重复的输入参数,因为元素被添加到集合中,如果元素已经存在,其
boolean add(E)
方法将返回false

第二个输出将打印结果集的大小,这可能与原始参数列表的大小不同,因为该集将只包含唯一的元素,然后是所有元素,很可能以完全不同的顺序

从HashSet文档:

它不保证集合的迭代顺序;特别是,它不能保证订单在一段时间内保持不变


第一个输出将按传递顺序打印重复的输入参数,因为元素被添加到集合中,如果元素已经存在,其
布尔添加(ee)
方法将返回false

第二个输出将打印结果集的大小,这可能与原始参数列表的大小不同,因为该集将只包含唯一的元素,然后是所有元素,很可能以完全不同的顺序

从HashSet文档:

它不保证集合的迭代顺序;特别是,它不能保证订单在一段时间内保持不变


阅读
add
方法的
Set
功能。请添加缺少的
{
,这样代码就可以编译。@Aarce做下面的答案帮助吗?请阅读
Set
add
方法做什么。请添加缺少的
{
,这样代码就可以编译。@Aarce做下面的答案帮助吗?