Как я могу объединить два очень похожих метода в java, что приведет к двум отдельным ListArrays? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть два метода, которые в основном делают одно и то же, они ищут в файле XML определенные элементы, например, углы, которые анализируются по точкам и затем вставляются в ArrayList. Я хотел бы объединить два метода в один, поскольку они делают одно и то же. Но я все еще хочу иметь два отдельных ArrayLists в конце.

Я также хотел бы спросить, является ли метод правильным (я провел много исследований) и могу ли я проверить, есть ли какие-либо углы и лампы в файле, прежде чем читать его. Потому что не каждый файл содержит эти элементы.

Может, ты поможешь мне с этим? Был бы признателен, что много!

1 Ответ

3 голосов
/ 02 мая 2020

Абстрагируй, что меняется. Передайте строку, переданную ElementFilter в качестве аргумента.

private ArrayList<Point2D.Float> readPositions(Element rootElement, String s) {
    ArrayList<Point2D.Float> pos = new ArrayList<>(); 
    IteratorIterable<Element> iter = rootElement.getDescendants(new ElementFilter(s));
    while (iter.hasNext()) {
        Element elem = iter.next(); 
        Element childX = elem.getChild("x");
        Element childY = elem.getChild("y");
        Point2D.Float lamp = new Point2D.Float(
                Float.parseFloat(childX.getText()),
                Float.parseFloat(childY.getText()));
        pos.add(lamp);
    } 
    return pos;
}

Назовите ее как

 ArrayList<Point2D.Float> vertices = readPositions(rootElement, "Ecke"); 
 ArrayList<Point2D.Float> lamps = readPositions(rootElement, "Lampe"); 

Вы можете переименовать метод и параметр 2-й строки, чтобы дать более осмысленное имя ( Я не мог полностью понять проблемную область).

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