Печать только заданного значения элементов в ArrayList? - PullRequest
0 голосов
/ 13 марта 2012

Я просто хочу знать, как распечатывать Strings в ArrayList с заданным определенным значением только для вывода. Например: я ввожу «Горячий», «Холодный», «Давление», «Боль». Какой метод / управляющий оператор мне следует использовать, чтобы на выходе были только слова с четырьмя буквами?

Выход: "Холодно" "Боль"

Он печатает только «Холод» и «Боль», потому что они единственные с четырьмя элементами. Будет ли полезным использование .set?

Ответы [ 3 ]

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

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

public static void main(String[] args) {
    List<String> list = Arrays.asList("Hot", "Cold", "Pressure", "Pain");

    //Solution 1
    for (String s : list) {
        if (s.length() == 4) {
            System.out.println(s); //prints Cold and Pain
        }
    }

    //Solution 2
    Map<Integer, List<String>> map = new HashMap<Integer, List<String>> ();
    for (String s : list) {
        int length = s.length();
        if (map.containsKey(length)) {
            map.get(length).add(s);
        } else {
            map.put(length, new ArrayList<String>(Arrays.asList(s)));
        }
    }

    System.out.println(map.get(4)); //prints [Cold, Pain]
    System.out.println(map.get(3)); //prints [Hot]
}
0 голосов
/ 13 марта 2012

Я бы также проверил наличие нулей (не знаю, могут ли они возникнуть в вашей ситуации), чтобы избежать возможного исключения java.lang.NullPointerException:

    List<String> list = Arrays.asList("Hot", "Cold", "Pressure", null, "Pain");

    for (String s : list) {
        if (s != null && s.length() == 4) {
            System.out.println(s); // prints "Cold" and "Pain"
        }
    }
0 голосов
/ 13 марта 2012
  • Вы можете добавить строки на карту.Ключом может быть длина строки и значение списка строк.

Map<Integer, List<String>> -> Map<string length, List<String>>

Это ожидаемое O (1) время выполнения

  • Вы можете хранить строки в списке и проходить по ним:
    List list = ...

    for (String s: list){
        if (s.length()==4){
              print(s);
        }
    }

Эта строка имеет линейное время выполнения

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