Как получить элементы подсписка в Java - PullRequest
0 голосов
/ 01 августа 2020

Я уже искал в Google, но не нашел удовлетворительного решения.

Я хочу сохранить все числа в первом списке: «список».

Если числа делятся на 2, я также хочу сохранить их во втором списке: "list2"

Мои проблемы:

  1. Какие параметры должен получить подсписок? Я не думаю, что (list.subList (0, list.size ()) верны;)
  2. Как мне получить элементы подсписка «list2» в моем методе print ()?

Я могу передать только первый список в качестве параметра

Спасибо за вашу помощь!

ArrayList<Integer> list = new ArrayList<Integer>();
    ArrayList<Integer> list2 = new ArrayList<Integer>(list.subList(0, list.size()));

    list.add(2);
    list.add(1);
    list.add(4);
    list.add(5);
    list.add(10);

    for (int i = 0; i < list.size(); i++) {

        if (list.get(i) % 2 == 0) {
            list2.add(list.get(i));
        }
    }

    print(list);

}

private static void print(ArrayList<Integer> list) {

    for (Integer integer : list) {
        System.out.println(integer);
    }

}

Ответы [ 5 ]

1 голос
/ 01 августа 2020

Если вы измените объем подсписка. Итак, print () может оценить.

public class Test {

    static ArrayList<Integer> sublist = new ArrayList<Integer>();
    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<Integer>();
         list.add(2);
            list.add(1);
            list.add(4);
            list.add(5);
            list.add(10);

            for (int i = 0; i < list.size(); i++) {

                if (list.get(i) % 2 == 0) {
                    sublist.add(list.get(i));
                }
            }

            print(list);

        }

        private static void print(ArrayList<Integer> list) {

            for (Integer integer : list) {
                if(sublist.contains(integer))
                System.out.println(integer);
            }

        }

}
1 голос
/ 01 августа 2020

Объявить список глобально. И отправьте первый список в качестве параметра. Распечатайте подсписок методом печати. ​​

public class Main {

static ArrayList<Integer> list = new ArrayList<Integer>();
static ArrayList<Integer> list2 = new ArrayList<Integer>(list.subList(0, list.size()));

public static void main(String[] args) {

    list.add(2);
    list.add(1);
    list.add(4);
    list.add(5);
    list.add(10);

    for (int i = 0; i < list.size(); i++) {
        if (list.get(i) % 2 == 0) {
            list2.add(list.get(i));
        }
    }
    
    System.out.println("------------------Orginal List------------------");
    print(list);
    
}

private static void print(ArrayList<Integer> list) {
    for (Integer integer : list) {
        System.out.println(integer);
    }
    
    System.out.println("------------------Sub List------------------");
    
    for (Integer integer : list2) {
        System.out.println(integer);
    }
}

Вывод:

------------------Original List------------------                                                                                                            
2                                                                                                                                                           
1                                                                                                                                                           
4                                                                                                                                                           
5                                                                                                                                                           
10                                                                                                                                                          
------------------Sub List------------------                                                                                                                
2                                                                                                                                                           
4                                                                                                                                                           
10
1 голос
/ 01 августа 2020

, вы можете использовать java Streams для этого. Это чище и проще в работе, а также меньше кода.

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


public class Main {

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        List<Integer> list2 = new ArrayList<Integer>();

        list.add(2);
        list.add(1);
        list.add(4);
        list.add(5);
        list.add(10);
        
        list2 = list.stream()
            .filter( number -> number%2==0)
            .collect(Collectors.toList());
            
        
        for(int number : list2) {
            System.out.println(number);
        }

    }

}

1 голос
/ 01 августа 2020
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();

list.add(2);
list.add(1);
list.add(4);
list.add(5);
list.add(10);
for (int i = 0; i < list.size(); i++) {
    if (list.get(i) % 2 == 0) {
       list2.add(list.get(i));
    }
}

print(list, list2);



private static void print(ArrayList<Integer> list, ArrayList<Integer> list2) {

    for (Integer integer : list) {
        System.out.println(integer);
    }
    System.out.println("----sublist----");
    for (Integer integer : list2) {
       System.out.println(integer);
    }
}
print(list);
print(list2);

private static void print(ArrayList<Integer> list) {

    for (Integer integer : list) {
        System.out.println(integer);
    }

}
print(list);
    
    private static void print(ArrayList<Integer> list) {
    
        for (Integer integer : list) {
            System.out.println(integer);
            if(integer%2==0){
               System.out.println("sub list----"+integer);
            }
        }
    
    }
0 голосов
/ 01 августа 2020

Если используется Java 8 или новее, я бы предложил использовать потоковый API :

public static List<Integer> extractEvens(final List<Integer> numbers) {
    return numbers.stream()
        .filter(value -> value % 2 == 0)
        .collect(Collectors.toList());
}

Демо Ideone

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