Я принимаю строку, которая состоит из отформатированных строк, за которыми следует "\ n".Формат включает в себя имя объекта и 0 или более имен объектов, от которых он зависит. У меня возникла проблема при попытке найти хороший способ построения списка смежности из этого.Я могу разбить каждую строку на части и создать из нее объект, а также добавить его в карту или список, состоящий из связанных списков, но у меня по-прежнему возникают проблемы при попытке прохождения каждого внутреннего массива зависимостей и сравнения их с другими объектами длядобавьте их в связанный список зависимых объектов.
Я попытался использовать ArrayList из LinkedLists, но для его запуска я получаю цикл массива, затем цикл каждого связанного списка, затем циклкаждого массива зависимостей, и я застреваю, пытаясь сравнить каждую строку в этом массиве с именем индекса 0 других связанных списков.
Я также попытался использовать HashMap, где я храню имяобъект и LinkedList объектов, но это примерно одна и та же проблема.
Я изучил множество учебных пособий по спискам смежности и графам в целом, но большинство из них представляют собой отдельные не сложные элементы с ребрами для других не сложных элементов.,У меня проблемы с переносом этого в мой вариант использования.
ниже - пример того, что я пытаюсь сделать.
// expected input
StringBuffer sb=new StringBuffer();
sb.append("target:target2 target4:outcommand\n"
+"target2:target3:outcommand\n"
+"target4:target5:outcommand\n"+"target3::outcommand\n"
+"target5::outcommand\n");
// methods and variables
public class Graph {
// instance variables
private Map<String, LinkedList<Node>> adjMap;
public Graph(StringBuffer input) {
adjMap = new HashMap<String, LinkedList<Node>();
// break buffer into string array
String tempString = input.toString();
String[] strArr = tempString.split("\n");
for (String s : strArr) {
//create nodes and populate the Map
//identify ':' indexes to parse the steing
Node tempNode = new Node(targetName, dependencyArray, outcommand);
LinkedList<Node> tempList = new LinkedList<>();
tempList.add(tempNode);
adjMap.put(targetName, tempNode);
}
}
private void buildDependencies() {
/*
* go through each Nodes dependency array and check against each key, if match
* is found add a copy of the matching node to the LinkedList of the node
* depending on it
*/
}
private class Node {
Node(String targetName, String[] depArray, String outcommand) {
// build the node
}
}
}
// Expected output: runCheck(target4) = "target5 outcommand"
каждый объект имеет выход.Что мне нужно сделать для этого назначения, так это распечатать выходные данные для всех зависимостей данного объекта.