Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有更好的方法一次在一个集合中添加几个单词?_Java_Hashset - Fatal编程技术网

Java 有没有更好的方法一次在一个集合中添加几个单词?

Java 有没有更好的方法一次在一个集合中添加几个单词?,java,hashset,Java,Hashset,我只是想知道,一次向哈希集中添加多个项的最佳方法是什么 我正在做一个家庭作业,其中的目标是迭代一个.java文件并计算文件中的关键字。在赋值描述的底部写着(“提示:创建一个集合来保存所有Java关键字”) 我并不完全熟悉哈希集,我不知道如何一次添加大量单词,我当然不想对每个关键字进行.add(“final”).add(“true”)…等等 因此,我创建了一个包含所有这些单词的数组列表。然后我使用for循环来循环,并将每个循环添加到集合中。然而,这似乎是多余的。如果我在一个数组中得到了所有关键字,

我只是想知道,一次向哈希集中添加多个项的最佳方法是什么

我正在做一个家庭作业,其中的目标是迭代一个.java文件并计算文件中的关键字。在赋值描述的底部写着(“提示:创建一个集合来保存所有Java关键字”)

我并不完全熟悉哈希集,我不知道如何一次添加大量单词,我当然不想对每个关键字进行.add(“final”).add(“true”)…等等

因此,我创建了一个包含所有这些单词的数组列表。然后我使用for循环来循环,并将每个循环添加到集合中。然而,这似乎是多余的。如果我在一个数组中得到了所有关键字,那么我不明白为什么我需要将它们添加到哈希集中才能完成赋值。 但是,为了学习更多关于hashset的知识,有没有一种方法不用我使用的方法(除了1乘1之外)就可以做到这一点

String[]aryKeywords={“abstract”、“asset”、“boolean”、“break”、“byte”、“case”、“catch”、“char”、“class”、“const”、“continue”、“default”、“do”、“double”、“else”、“enum”、“extends”、“final”、“final”、“float”、“for”、“goto”、“if”、“implements”、“import”、“instanceof”、“int”、“interface”、“long”、“native”、“new”、“package”、“private”,“受保护”、“公共”、“返回”、“短”、“静态”、“strictftp”、“超级”、“切换”、“同步”、“此”、“抛出”、“抛出”、“瞬态”、“尝试”、“无效”、“易失性”、“同时”、“假”、“空”、“真”};
Set jKeywords=newhashset();
对于(int i=0;i<0.length;i++){
jKeywords.add(关键字[i]);
}

感谢您的帮助!

同样的东西也有一些变体(double{{{trick,我不喜欢,但如果您真的想要,我会启用),但是不,Java在这里并没有一个完美的答案。对于您来说,另一个变体是字符串[]您做到了,然后是Arrays.as将其列为一个列表,然后设置为set.addAll。从效率角度来看,没有一个特别好。

您可以使用:

Set<String> jKeywords = new HashSet<String>(Arrays.asList(aryKeywords));
Set<String> jKeywords = new HashSet<String>(Arrays.asList(aryKeywords));
您可以使用:

Set jKeywords=newhashset(Arrays.asList(aryKeywords));
Set jKeywords=newhashset(Arrays.asList(aryKeywords));
你可以这样做

jKeywords.addAll(Arrays.<String>asList(aryKeywords));
jKeywords.addAll(Arrays.asList(aryKeywords));

但这会为更干净的代码增加更多的垃圾。Jon Skeet的答案是正确的。另一种方法(根据其文档,据说更快)是:

Set<String> jKeywords = new HashSet<String>();
Collections.addAll(jKeywords, aryKeywords);

我不认为您可以绕过将项目表示为数组,但是,您可以通过使用类似

new HashSet (Arrays.asList(aryKeywords));

+1对于生成垃圾的警告。这通常不是一个重要问题…但是避免循环也不重要:-)更喜欢使用
Collections.addAll(foo,bar)
而不是
foo.addAll(Arrays.asList(bar))
。前者的文档声称速度更快。感谢那些提供信息的家伙。我记得,尽管有些模糊,我读过一些关于这些收藏的东西。addAll()几天前我在课堂上的时候。--感谢所有回答的人。我想除非我有证据表明这段代码的性能总体上是显著的,否则我可能会坚持使用
asList
-它看起来更干净。值得了解
集合。addAll
但是-谢谢。我想作业要求你计算di在文件中保留关键字。将单词添加到集合中是一种过滤重复项的简单方法;结果集合大小是不同关键字的数量。这一点很好。既然你提到了这一点,我可以看出这可能就是目的。现在,我必须完成并编辑我的作业!我已经完成了计算所有关键字的工作。
Set<String> jKeywords = new HashSet<String>(Arrays.asList(aryKeywords));
jKeywords.addAll(Arrays.<String>asList(aryKeywords));
Set<String> jKeywords = new HashSet<String>();
Collections.addAll(jKeywords, aryKeywords);
Collections.addAll(jKeywords, "abstract", "asset", "boolean", /* ... */);
new HashSet (Arrays.asList(aryKeywords));