java исключение .lang при преобразовании int в строку - PullRequest
0 голосов
/ 28 мая 2020

Мне поручено создать метод, который взял бы два списка и определил, какие целые числа в списках являются общими. Я решил использовать списки ArrayLists, потому что они изменяемые, и вложенный для l oop, чтобы перебирать два списка для определения общих целых чисел. Я не был уверен, могут ли ArrayLists быть типами, возвращаемыми для методов, поэтому я решил попробовать сделать ArrayList обычным массивом, но получил исключение java .lang со следующим кодом. Как исправить?

 import java.util.*; 
 import java.util.ArrayList;


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

        listUno.add(4);
        listUno.add(3);
        listUno.add(2);
        listUno.add(1);

        ArrayList<Integer> listDos = new ArrayList<Integer>();

        listDos.add(4);
        listDos.add(3);
        listDos.add(2);
        listDos.add(1);

        System.out.println(inCommon(listUno, listDos));
    }

    public static Object[] inCommon(ArrayList<Integer> list1, ArrayList<Integer> list2){
        Collections.sort(list1);
        Collections.sort(list2);

        ArrayList<Integer> newList3 = new ArrayList<Integer>();
        for (int indexOne = 0; indexOne<list1.size(); indexOne++)
            for(int indexTwo = 0; indexTwo<list2.size(); indexTwo++)
                if (list1.get(indexOne) == list2.get(indexTwo))
                    newList3.add(list1.get(indexOne));

        Object[] newArray = newList3.toArray();

        for(Object o : newArray) {
            String s = (String) o;
            System.out.println(o);
        }
    return newArray;

    }   
}

1 Ответ

1 голос
/ 28 мая 2020

Любой объект может быть возвращаемым типом, включая ArrayList. ArrayList имеет метод contains, который можно использовать для сравнения списков, как показано ниже:

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

    listUno.add(4);
    listUno.add(5);
    listUno.add(2);
    listUno.add(2);

    ArrayList<Integer> listDos = new ArrayList<>();

    listDos.add(4);
    listDos.add(3);
    listDos.add(2);
    listDos.add(2);

    System.out.println(inCommon(listUno, listDos));
}

public static ArrayList<Integer> inCommon(ArrayList<Integer> list1, ArrayList<Integer> list2) {
    ArrayList<Integer> list3 = new ArrayList<>();
    HashSet<Integer> set = new HashSet<>();

    for (int i : list1) {
        if (list2.contains(i)) {
            set.add(i);
        }
    }

    list3.addAll(set);

    return list3;
}

Вывод:

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