Как ограничить размер символа в строке, хранящейся как элементы ArrayList в Java? - PullRequest
4 голосов
/ 20 марта 2012

В настоящее время у меня есть ArrayList строк в Java, но я хотел бы сократить (или ограничить) количество символов в каждой строке до 20. Я не смог найти способ сделать это.

Пример:

"hello this is one of the descriptions in an array list, please limit me to 20"

должно стать:

"hello this is one of"

Ответы [ 5 ]

3 голосов
/ 20 марта 2012

Некоторые возможные способы:

  • Расширить ArrayList и переопределить его add(...) методы.Мне это не нравится.
  • Оберните ваш ArrayList и в открытых методах, которые добавляют или изменяют его содержимое, ограничивают количество символов.Эта идея мне нравится гораздо больше!
  • Редактировать: Или не иметь ArrayList<String>, а вместо этого ArrayList<MyCustomClass>, где методы конструктора или сеттера MyCustomClass обрезают строки по мере необходимости.Мне это тоже нравится!
2 голосов
/ 20 марта 2012

В методе, который добавляет строки:

public void addString(String str) {
    String truncated = str != null ? str.substring(0, 20) : null;
    strings.add(truncated);
}
0 голосов
/ 20 марта 2012

Вы также можете просто иметь ArrayList пользовательского класса, который представляет собой массив длиной до 20 символов. Недостатком, конечно же, является то, что вы по существу заново реализуете класс String Java

0 голосов
/ 20 марта 2012

Предполагая, что это уже существующий список, который вы хотите изменить:

public static void truncate20(List<String> strs) {
    for (ListIterator<String> iter = strs.listIterator(); iter.hasNext();) {
        String str = iter.next();
        if (str.length() > 20) {
            iter.set(str.substring(0, 20));
        }
    }
}

Создать новый список достаточно просто - просто add каждая итерация.

Если вы хотите сделать это при вставке, я предлагаю вам написать класс, который * не расширяет List. Просто дайте нужную вам операцию, которая имеет смысл.

0 голосов
/ 20 марта 2012

Вы делаете это с помощью String.substring () .Пример:

String str = "hello this is one of the descriptions in an array list, please limit me to 20";
String str20 = str.substring(0, 20);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...