在JavaSwing中加载csv树结构
我有一个csv,它以以下方式保存树结构:在JavaSwing中加载csv树结构,java,swing,csv,jtree,Java,Swing,Csv,Jtree,我有一个csv,它以以下方式保存树结构: Root;;;;;;; ;Cat1;;;;;; ;;Sub1;;;;; ;;Sub2;;;;; ;;Sub3;;;;; ;Cat2;;;;;; ;;Sub4;;;;; ;;;SSb1;;;; 我想用JAVA加载这个结构并在JTree中显示它 我使用opencsv解析结构并动态创建树。这就是它看起来的样子: public static DefaultMutableTreeNode root = null; public static DefaultMut
Root;;;;;;;
;Cat1;;;;;;
;;Sub1;;;;;
;;Sub2;;;;;
;;Sub3;;;;;
;Cat2;;;;;;
;;Sub4;;;;;
;;;SSb1;;;;
我想用JAVA加载这个结构并在JTree中显示它
我使用opencsv解析结构并动态创建树。这就是它看起来的样子:
public static DefaultMutableTreeNode root = null;
public static DefaultMutableTreeNode pointer = null;
public static DefaultMutableTreeNode temp = null;
public static int index = 0;
public static void main(String[] args) {
CSV csv = CSV
.separator(';') // delimiter of fields
.quote('"') // quote character
.create(); // new instance is immutable
csv.read("MyCSV.csv", new CSVReadProc() {
public void procRow(int rowIndex, String... values) {
if (root == null) {
root = new DefaultMutableTreeNode(values[0]);
pointer = root;
index = 1;
} else {
for(int i = 0; i<values.length;i++) {
if (!values[i].isEmpty() && (i+1)<values.length) {
if (index == i) {
} else if (index < i) {
pointer = temp;
index = i;
}
temp = new DefaultMutableTreeNode(values[i]);
pointer.add(temp);
}
}
}
}
});
}
public静态DefaultMutableTreeNode root=null;
公共静态DefaultMutableTreeNode指针=null;
公共静态DefaultMutableTreeNode临时值=null;
公共静态int索引=0;
公共静态void main(字符串[]args){
CSV=CSV
.separator(“;”)//字段的分隔符
.quote(“”)//引号字符
.create();//新实例是不可变的
读取(“MyCSV.csv”,新的CSVReadProc(){
public void procRow(整数行索引、字符串…值){
if(root==null){
root=新的DefaultMutableTreeNode(值[0]);
指针=根;
指数=1;
}否则{
对于(int i=0;i您可以使用Map
键将是对象的深层索引,树节点将是该索引的最后一个。
然后您可以将index-1
作为父级
Root;;;;;;; --> [{1,Root}] i=1
;Cat1;;;;;; --> [{1,Root},{2,Cat1}] --> i=2 --> Parent : Root
;;Sub1;;;;; --> [{1,Root},{2,Cat1},{3,Sub1}] --> i=3 --> Parent : Cat1
;;Sub2;;;;; --> [{1,Root},{2,Cat1},{3,Sub2}] --> i=3 --> Parent : Cat1
;;Sub3;;;;; --> [{1,Root},{2,Cat1},{3,Sub3}] --> i=3 --> Parent : Cat1
;Cat2;;;;;; --> [{1,Root},{2,Cat2},{3,Sub2}] --> i=2 --> Parent : Root
;;Sub4;;;;; --> [{1,Root},{2,Cat2},{3,Sub4}] --> i=3 --> Parent : Cat2
;;;SSb1;;;; --> [{1,Root},{2,Cat2},{3,Sub4},{4,SSb1}] --> i=4 --> Parent : Sub4
哇,这真是一个很好的解决方案!非常感谢!顺便说一句:如果地图中有更多具有相同键的对象,HashMap只接受“最新”的对象,这真是一个很酷的功能。