Как я могу использовать строковый параметр s для создания нового LinkedList с именем параметра? - PullRequest
0 голосов
/ 30 октября 2019

Я создаю список очереди, которая будет содержать некоторые объекты. Я хотел бы создать метод, который будет добавлять новую очередь в список и возвращать логическое значение. В объявлении метода должен быть параметр String, который добавит новую очередь с тем же именем в список очередей. Я не могу использовать параметр String в качестве идентификатора для нового LinkedList, поскольку он уже определен как String. Как я могу создать этот новый LinkedList, используя строковый параметр?

public boolean addQueue(String s){

LinkedList<Pcb> s = new LinkedList<Pcb>();

QList.add(s);

return true;

}

1 Ответ

0 голосов
/ 30 октября 2019

Я не уверен, что вы хотите, заключается в следующем. Но вам не нужно указывать имя каждого списка, который вы хотите добавить, вы можете просто использовать List.contains(), который будет использовать Object.equals() для сравнения. И он собирается сравнить весь контент в списке, точнее, он использует Object.hashCode() для достижения этой цели. Поэтому я не думаю, что требуется дополнительный уникальный идентификатор .

Фрагмент кода

private static List<List<String>> QList = new ArrayList<>();

public static void main(String[] args) {
    addQueue(Arrays.asList("a","b","c"));
    addQueue(Arrays.asList("a","b","c"));
    addQueue(Arrays.asList("c","b","a"));
    addQueue(Arrays.asList("a","c","b"));
    addQueue(Arrays.asList("c","b","a"));

    System.out.println(QList.toString());
}

public static void addQueue(List<String> list){
    if (!QList.contains(list)) {
        QList.add(list);
    }
}

Вывод на консоль

[[a, b, c], [c, b, a], [a, c, b]]

...