如何在集合中添加大量条目

时间:2013-07-08 18:25:59

标签: java set

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

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个条目,我不可能逐个手动添加它们。是否可以添加一个大的整体而不是一个一个?

3 个答案:

答案 0 :(得分:2)

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

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

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

  

NAME1

     

NAME2

     

NAME3

只需阅读每一行,然后为每一行添加该行。

答案 1 :(得分: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);
    }      

答案 2 :(得分: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代码中。