-2

我需要在集合中添加大量元素。我正在考虑以下实现

Set<String> myset = new HashSet<String>(){{
  add("name1");
  add("name2e");
  //and so on
}};

或创建未初始化的集合,然后添加值

Set<String> myset = new HashSet<String>();
myset.add("name1");
//amd so on

但是我有1000多个条目,我手动一个一个添加它们是不可行的。是否可以将一个大组作为一个整体而不是一个一个添加?

4

3 回答 3

2

听起来你应该以某种方式使用循环。像这样去:

for (String element : elements) {
    set.add(element);
}

由您决定如何获得elements. 从文件或其他东西中读取它们。如果文件看起来像这样:

名称1

名称2

名称3

只需阅读每一行,并将每一行添加到您的集合中。

于 2013-07-08T18:27:57.437 回答
1

如果您有重复的值,则不能set在此处使用。将所有值放入文件并使用 java 代码读取它们。

那么它会很容易。您可以使用如下代码来做到这一点

    FileReader file=new FileReader("D:\\Test.txt");
    BufferedReader br=new BufferedReader(file);
    String str;
    Set<String> st=new HashSet<String>();
    while((str=br.readLine())!=null)
    {
         st.add(str);
    }      
于 2013-07-08T18:37:05.937 回答
0

首先,这不是一个好主意。它太奇怪了:

Set<String> myset = new HashSet<String>(){{
  add("name1");
  add("name2e");
  //and so on
}};
  • 外部大括号集创建一个匿名内部类。HashSet不是最终的,所以它有效。
  • 内部的大括号集是一个初始化块。不是静态的(更常用的),而是实例初始化块。
  • 那里的 java 代码调用该add()实例上的方法。

但你可以这样做:

String[] strs = new String[]{
  "name1",
  "name2e",
  //and so on
};

Set<String> myset = new HashSet<String>();
myset.addAll(Arrays.asList(strs)); // This is the easy way

但这是我在@nachokk 指出改进之前所拥有的。

for (String s ; strs) {
    myset.add(s);
}

获取某人给您的单词文件并将其加载到文字处理器或文本编辑器中非常容易。然后使用搜索和替换重新格式化它,使每行一个单词。然后在每行的前面添加一个双引号,在末尾添加一个双引号 + 逗号。例如,像 TextPad 这样的东西可以对一整行进行正则表达式搜索并将字符添加到前端和末尾。

可以将其剪切并粘贴到上面的 Java 代码中。

于 2013-07-08T18:33:01.790 回答