Как разбить несколько значений интергера на массив индекса - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть Integer s внутри ArrayList

ArrayList<Integer> al = new AraayList<Integer>();
al.add(100);
al.add(211);

Теперь я хочу разбить значения в ArrayList на массив. Предположим, что 100 является первым значением в ArrayList, тогда соответствующий массив должен содержать 1, 0, 0

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Если вы используете Java 8+, вы можете использовать потоки с этим трюком:

List<Integer> result = al.stream()
        .map(String::valueOf) 
        .flatMap(s -> Arrays.stream(s.split("")))
        .map(Integer::valueOf) 
        .collect(Collectors.toList());

Подробности

  • .map(String::valueOf) это преобразует ваше целое число в строку eg. 100 => "100"
  • .flatMap(s -> Arrays.stream(s.split(""))) это создаст поток путем разделения с "" например. "100" => ["1", "0", "0"]
  • .map(Integer::valueOf) это будет анализировать каждую строку в целое число, например. ["1", "0", "0"] => [1, 0, 0]
  • .collect(Collectors.toList()); это соберет весь результат в список, например. [1, 0, 0, 2, 1, 1]
0 голосов
/ 05 сентября 2018

Вы можете перебирать массив, конвертировать Integer в String и использовать метод Split , чтобы получить String array:

for(int i=0; i < al.size(); i++)
{
   String [] array = al[i].toString().split("");
   // do whatever you need with the array
}
0 голосов
/ 05 сентября 2018

Вы можете запускать каждый элемент в цикле for или foreach начиная с Java 8. Затем в цикле вы можете преобразовать его в строку с

yourNumberAsString = String.valueOf(yourNumberInArray);

С

yourNumberAsString.charAt(0); 

вы получите позицию первой цифры, со 100 это будет 1. Если вы делаете это динамически в другом цикле for, ваша работа завершена.

...