Загружая большое количество строк в мой ArrayList, я не хочу засорять свой класс - PullRequest
1 голос
/ 27 ноября 2010

У меня есть ArrayList, и я хочу добавить в него много строк (несколько сотен), но я не хочу кодировать огромный список .add () и тому подобное.Могу ли я добавить строки из моего файла strings.xml в ArrayList?Если да, то как?

Ответы [ 5 ]

4 голосов
/ 27 ноября 2010

Если у вас есть значения, сохраненные в файле 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));
2 голосов
/ 27 ноября 2010

Вот пример чтения файла "words.txt" из assets-direcytory в вашем проекте.Каждое слово в строке само по себе.

    /*
     *  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();
    }
0 голосов
/ 27 ноября 2010

Если 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 );
  }
0 голосов
/ 27 ноября 2010

Если у вас есть тысячи слов, возможно, хорошее размещение - поместить их в текстовый файл.Однако, если количество слов не так много, вы можете сделать еще одну вещь, чтобы избежать многократного вызова add ():

String [] myArray = {"stack", "oveflow", "java","массив", ...};// большой массив с множеством строк.

Список списка = Arrays.asList (myArray);

0 голосов
/ 27 ноября 2010

Поместите 100 строк в файл и прочитайте его. Выполните итерацию, используя цикл for, чтобы добавить эти строки. Если вы не хотите использовать файл, пользователь String [] words = new String [] {"test", "me" ... "last word"}, а затем выполните итерацию над ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...