根据元素的属性合并列表中的元素 Java

问题描述 投票:0回答:1

我有一个包括交通堵塞的通用列表。交通堵塞类有以下属性 String start, string end, int length.

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>) {...

现在,我想用一个方法(也许是迭代?)将一个结束于另一个干扰的干扰组合成一个单一的干扰。这个方法应该在管理类中。这个方法应该是什么样子的?

非常感谢

java list
1个回答
0
投票

你是不是在找像下面这样的东西。

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);
    }

}

0
投票

你可以做这样的事情。

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;
© www.soinside.com 2019 - 2024. All rights reserved.