Java - изменить массив строк в ArrayList <String>

1
int currentKeySize=8;

String message = new String();
message="This is a test message";   
String[] splitMessage = new String[currentKeySize];
Arrays.fill(splitMessage,"");

for (int i = 0; i < message.length(); ++i) {            
    splitMessage[i % splitMessage.length] += message.charAt(i);         
}
for (int i = 0; i < splitMessage.length; ++i) { 
    System.out.println(splitMessage[i]);
}

Этот код принимает сообщение и разбивает его на массив размером 8, по одному символу в то время, поэтому char (0) переходит к String (0)... char (7) в String (7) и char (8) обратно в String (0).

У меня есть целая программа, работающая над этой концепцией, и это здорово... однако теперь мне нужно динамически модифицировать currentKeySize, предпочтительно используя цикл 'for', чтобы он переходил от 1 или 2 (количество разделов) к n (допустим, 20 разделов),

Я знаю ArrayList <String>, но мне не очень повезло с ним, поскольку это довольно новая концепция для меня. Я не могу понять, как заставить его работать аналогично тому, что у меня есть, с добавлением символов.

Может ли кто-нибудь продемонстрировать правильное использование ArrayList <String> (не принимал без пробелов между <>), чтобы он выполнял то же самое, что и выше?

Любая помощь будет оценена!

Решаемые. Спасибо micneer за то, что я просил =).

Теги:
string
arrays
arraylist

4 ответа

0
Лучший ответ

Вы можете попробовать это, желайте вам помощи.

    int currentKeySize = 8;

    String message = new String();
    message="This is a test message";   
    List<String> list = new ArrayList<String>();

    for (int i = 0; i < currentKeySize; ++i) {
        list.add(i % currentKeySize, "");
    }
    for (int i = 0; i < message.length(); ++i) {      
        list.set(i % currentKeySize, list.get(i % currentKeySize) + message.charAt(i));
    }
    for (int i = 0; i < list.size(); ++i) { 
        System.out.println(list.get(i));
    }
  • 0
    Спасибо. Именно то, что я пропустил ... 'list.set'.
0

Вы можете сделать это. Поэтому вам не нужно беспокоиться об исходном размере.

  String message = new String("This is a test message");
  String[] splitMessage =message.split("");
0
public static void main(String[] args) {
    int currentKeySize=8;

    String EMPTY_STRING = "";
    String message = new String();
    message="This is a test message";   
    List<String> splitMessage = new ArrayList<String>();
    Collections.fill(splitMessage, EMPTY_STRING);
    for (int i = 0; i < message.length(); ++i) {            
        try {
            String str = splitMessage.get(i%currentKeySize) + message.charAt(i); 
            splitMessage.set(i%currentKeySize, str);
        } catch(IndexOutOfBoundsException e) {
            //Adding EMPTY_STRING will convert character to String.
            splitMessage.add(EMPTY_STRING+message.charAt(i));
        }
    }
    System.out.println(splitMessage);
}

Я думаю, что этот фрагмент кода решит вашу проблему.

0

Вы можете просто добавить свою разделенную строку в ArrayList:

Инициализировать список следующим образом:

List<String> list=new ArrayList<String>();

И позже добавьте к нему следующее:

list.add(spiltString);

Класс ArrayList расширяет AbstractList и реализует интерфейс List. ArrayList поддерживает динамические массивы, которые могут расти по мере необходимости.

Стандартные массивы Java имеют фиксированную длину. После создания массивов они не могут расти или сокращаться, а это значит, что вы должны заранее знать, сколько элементов будет удерживать массив.

Списки массивов создаются с начальным размером. Когда этот размер превышен, коллекция автоматически увеличивается. Когда объекты удаляются, массив может быть сокращен.

  • 0
    Вы не могли бы расширить свой ответ? как я уже упоминал, я немного новичок в списках и хорошо знаю Java, и я пока не вижу, как эта строка помогает мне или отвечает на мой вопрос.
  • 0
    Требуется ли преобразование String [] в List <String>?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню