将大量字符串加载到我的ArrayList中,我不想阻塞我的类

时间:2010-11-27 08:06:13

标签: java android string arraylist

我有一个ArrayList,我想在其中放入很多字符串(几百个),但我不想编写一个巨大的.add()等列表。我可以将strings.xml文件中的字符串重要到ArrayList中吗?如果是这样,怎么样?

5 个答案:

答案 0 :(得分:4)

如果您在strings.xml文件中保存了值,则可以执行以下操作:

ArrayList<String> values = new ArrayList<String>();
Collections.addAll(values, getResources.getStringArray(R.array.words));

List<String> values = Arrays.asList(getResources.getStringArray(R.array.words));

答案 1 :(得分:2)

以下是从项目的assets-direcytory中读取“words.txt”文件的示例。单词上的每个单词本身。

    /*
     *  If you know the number of words at compile time, 
     * specify it here in the initial capacity
     */
    ArrayList<String> words = new ArrayList<String>(50);  
    try {
        InputStream is = getResources().getAssets().open("words.txt");

        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;

        while((line = br.readLine()) != null)
        {
            words.add(line);
        }

        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

答案 2 :(得分:0)

将100个字符串放入文件中并从中读取。迭代使用for循环来添加这些字符串。如果你不想使用文件,用户String [] words = new String [] {“test”,“me”...“last word”}然后迭代在它上面。

答案 3 :(得分:0)

如果您有数千个单词,可能将它们放入txt文件是一个很好的解决方案。但是,如果单词的数量不是那么多,你可以再做一件事来避免多次调用add():

String [] myArray = {“stack”,“oveflow”,“java”,“array”,...}; //包含大量字符串的大型数组。

List list = Arrays.asList(myArray);

答案 4 :(得分:0)

如果xml文件采用某种特定格式,您也可以使用dom4j

轻松阅读

例如:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
    <Address studentId="1001">
        <Details name="Sam" age="" sex="M" class="10" />
    </Address>
    <Address studentId="1002">
        <Details name="Krish" age="" sex="M" class="10" />
    </Address>
</Root>

您可以使用以下代码阅读:

String xmlFileName = "D:/validation/validator/src/summa/sample.xml";
  String xPath = "//Root/Address";
  Document document = getDocument( xmlFileName );
  List<Node> nodes = document.selectNodes( xPath );
  for (Node node : nodes)
  {
     String studentId = node.valueOf( "@studentId" );
     stringArray.add( studentId );
  }