Могу ли я найти общий родительский узел коллекции defualtmutabletreenodes ? Это включает в себя как стандартные, так и внешние библиотеки. Это не должно быть слишком дорогим, если возможно. @Test
// it should be split into at least two tests, but it'll do
void findCommonParent_returnsExpectedNode() {
/*
a____b
|____c____d
|____e____f
| |____g____h____i
| |____j
|____k
*/
JTree tree = new JTree();
DefaultMutableTreeNode rootNodeA = new DefaultMutableTreeNode("a");
DefaultMutableTreeNode nodeB = new DefaultMutableTreeNode("b");
DefaultMutableTreeNode nodeC = new DefaultMutableTreeNode("c");
DefaultMutableTreeNode nodeD = new DefaultMutableTreeNode("d");
DefaultMutableTreeNode nodeE = new DefaultMutableTreeNode("e");
DefaultMutableTreeNode nodeF = new DefaultMutableTreeNode("f");
DefaultMutableTreeNode nodeG = new DefaultMutableTreeNode("g");
DefaultMutableTreeNode nodeH = new DefaultMutableTreeNode("h");
DefaultMutableTreeNode nodeI = new DefaultMutableTreeNode("i");
DefaultMutableTreeNode nodeJ = new DefaultMutableTreeNode("j");
DefaultMutableTreeNode nodeK = new DefaultMutableTreeNode("k");
nodeC.add(nodeD);
nodeE.add(nodeF);
nodeE.add(nodeG);
nodeG.add(nodeH);
nodeG.add(nodeJ);
nodeH.add(nodeI);
rootNodeA.add(nodeB);
rootNodeA.add(nodeC);
rootNodeA.add(nodeE);
rootNodeA.add(nodeK);
DefaultTreeModel model = new DefaultTreeModel(rootNodeA);
tree.setModel(model);
Optional commonParentOptional = findCommonParent(Arrays.asList(nodeF, nodeJ));
assertTrue(commonParentOptional.isPresent());
assertEquals(nodeE, commonParentOptional.get());
Optional anotherCommonParentOptional = findCommonParent(Arrays.asList(nodeF, new DefaultMutableTreeNode()));
assertFalse(anotherCommonParentOptional.isPresent());
}
Optional findCommonParent(List nodes) {
// your implementation goes here
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... collection