Настройка
У меня есть куча с intLevels
уровнями и e
элементами (обоими int
с), хранящимися в двумерном массиве Object
с, heapArray, который intLevels
высотой и Math.pow(2, intLevels)
шириной.В гипотетических целях, скажем, я ввел 1, 2, 3, 4, 5, 6, 7, 8 и 9. Куча будет выглядеть примерно так:
9
8 6
7 3 2 5
1 4
, и если вы хотите напечататьэто с серией java.util.Arrays.toString(Object[] a)
с, это выглядело бы так:
[9, null, null, null, null, null, null, null]
[8, 6, null, null, null, null, null, null]
[7, 3, 2, 5, null, null, null, null]
[1, 4, null, null, null, null, null, null]
Кто-нибудь знает, как взять эту информацию и создать из нее JTree?Для тех, кто не знает, JTree работает очень похоже на связанный список.У вас есть корневой узел, к которому вы добавляете больше узлов, и вы можете добавить к ним дополнительные узлы.Я точно знаю, что если бы единственной кучей, с которой я имел дело, была эта, я мог бы сделать дерево таким образом:
jTree = new javax.swing.JTree();
treeNode1 = new javax.swing.tree.DefaultMutableTreeNode(9);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(8);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(7);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode(1);
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode(4);
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(3);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode(6);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(2);
treeNode2.add(treeNode3);
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode(5);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
jTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
, в результате чего дерево будет выглядеть так:
9
├8
│├7
││├1
││└4
│└3
└6
├2
└5
Редактировать
Я нашел реализованный метод ответа buildTree(List<Object[]>)
:
java.util.List<Object[]> objectArrays = new java.util.ArrayList<Object[]>();
objectArrays.addAll(Arrays.asList(heapArray));
jTree1 = buildTree(objectArrays);
он все еще не работает;дерево остается пустым.
Вопрос
Кто-нибудь знает относительно простой, но гибкий способ превратить этот 2D-массив в JTree с заданной информацией?При правильной реализации ввод значений 1, 2, 3, 4, 5, 6, 7, 8 и 9 в это дерево / кучу / массив должен привести к тому же результату, что и конкретный способ, который я показал выше.