Можно ли разделить ArrayList на два и создать новый список? - PullRequest
0 голосов
/ 05 марта 2020

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

[29.0, 19.0, 12.0, 8.0, 5.0, 3.0]

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

Учитывая A = 2 для этого примера ;

[29.0, 19.0, 12.0, 8.0, 5.0, 3.0]/A = [14.5, 9.5, 6.0, 4.0, 2.5, 1.5]

Вот часть кода.

ArrayList<Double> espacamento_lado_a = new ArrayList<Double>();
espacamento_lado_a.add(esp10a);
espacamento_lado_a.add(esp12a);
espacamento_lado_a.add(esp16a);
espacamento_lado_a.add(esp20a);
espacamento_lado_a.add(esp25a);
espacamento_lado_a.add(esp32a);
System.out.println(espacamento_lado_a);

Ответы [ 3 ]

0 голосов
/ 07 марта 2020

Это очень с потоком без зацикливания с использованием одной строки кода .

Что я предлагаю, это

double a=2.0;   
List<Double> newList=espacamento_lado_a.stream().map(e->e.doubleValue()/a).collect(Collectors.toList());

вы можете увидеть выходные данные, оба печатаются .

это полный код

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

public static void main(String[] args) {

    double a=2.0;   
    ArrayList<Double> espacamento_lado_a = new ArrayList<Double>();

    espacamento_lado_a.add(29.0);
    espacamento_lado_a.add(19.0);
    espacamento_lado_a.add(12.0);
    espacamento_lado_a.add(5.0);
    espacamento_lado_a.add(3.0);

    System.out.println(espacamento_lado_a);


List<Double> newList=espacamento_lado_a.stream().map(e->e.doubleValue()/a).collect(Collectors.toList());

      System.out.println(newList);
   }

}

Output would be as follows

0 голосов
/ 07 марта 2020

Сделайте это следующим образом:

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Double> list = List.of(29.0, 19.0, 12.0, 8.0, 5.0, 3.0);
        int a = 2;
        List<Double> result = list.stream().map(d -> d / a).collect(Collectors.toList());
        System.out.println(list + "/" + a + " = " + result);
    }
}

Вывод:

[29.0, 19.0, 12.0, 8.0, 5.0, 3.0]/2 = [14.5, 9.5, 6.0, 4.0, 2.5, 1.5]

Интерактивная версия:

import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Double> list = List.of(29.0, 19.0, 12.0, 8.0, 5.0, 3.0);
        System.out.println("Given list: " + list);
        System.out.print("Enter an integer to divide each element of the list with: ");
        int n = new Scanner(System.in).nextInt();
        List<Double> result = list.stream().map(d -> d / n).collect(Collectors.toList());
        System.out.println(list + "/" + n + " = " + result);
    }
}

Тестовый прогон:

Given list: [29.0, 19.0, 12.0, 8.0, 5.0, 3.0]
Enter an integer to divide each element of the list with: 2
[29.0, 19.0, 12.0, 8.0, 5.0, 3.0]/2 = [14.5, 9.5, 6.0, 4.0, 2.5, 1.5]
0 голосов
/ 05 марта 2020
ArrayList<Double> result = new ArrayList<Double>();
for(Double d : espacamento_lado_a) {
    result.add(d/A);
 }

result - это новый ArrayList<Double>, который вам нужен.

...