Объединить элементы в списке в соответствии с их атрибутами Java - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть общий список c, который включает в себя траффи c джемы. Класс Traffi c jam имеет атрибуты: начало строки, конец строки, длина int.

public class jam {
String start;
String end;
int length;
public jam (int pLength, String Start, String pEnd) {
start = pStart;
...

В административном классе все замятия добавляются в список (alljam):

public class Verwaltung {
List<jam> alljam = new List<jam>();
public Verwaltung () {
}
public void addtoList(List<jam>) {...

Теперь я хочу объединить джем, который заканчивается началом другого джема, в один джем, используя метод (может быть, с итерацией?). Этот метод должен быть в классе администрирования. Как бы выглядел этот метод?

Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Вы можете сделать что-то вроде этого:

List<jam> newJam = new ArrayList<>();
for (int i = 0; i < allJam.size(); i++) {
    jam current = allJam.get(i);
    if (current != null) {
        for (int j = 0; j < allJam.size(); j++) {
            if (i != j && allJam.get(j) != null && current.end.equals(allJam.get(j).start)) {
                newJam.add(new jam([some_length?], current.start, allJam(j).end));
                allJam.set(i, null);
                allJam.set(j, null);
                break;
            }
        }
    }
    if (allJam.get(i) != null)
        newJam.add(current);
}

allJam = newJam;
0 голосов
/ 27 апреля 2020

Вы ищете что-то вроде ниже:

class Jam {
    String start;

    public Jam(String start) {
        this.start = start;
    }

    @Override
    public String toString()
    {
        return this.start;
    }
}

class Administration {
    List<Jam> allJam = new ArrayList<>();

    public void addToList(List<Jam> jams) {
        allJam.addAll(jams);
    }

    @Override
    public String toString()
    {
        return allJam.toString();
    }
}

public class Demo
{

    public static void main(String[] args)
    {
        List<Jam> list1 = Arrays.asList(new Jam("a"), new Jam("b"));
        List<Jam> list2 = Arrays.asList(new Jam("c"), new Jam("d"));

        Administration admin = new Administration();
        // Prints: []
        System.out.println(admin);
        admin.addToList(list1);
        // Prints: [a, b]
        System.out.println(admin);
        admin.addToList(list2);
        // Prints: [a, b, c, d]
        System.out.println(admin);
    }

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