一个List里有例如如下数据
101
10101
10102
102
10201
10202
1020101
1020102
...
都是按照树分类的编号
101
|-10101
|-10102
102
|-10201
|-1020101
|-1020102
|-10202
...
如何编写代码取得此list中的所有叶子节点?即按照所给例子中取得的数字应为10101,10102,1020101,1020102,10202
谢谢!
101
10101
10102
102
10201
10202
1020101
1020102
...
都是按照树分类的编号
101
|-10101
|-10102
102
|-10201
|-1020101
|-1020102
|-10202
...
如何编写代码取得此list中的所有叶子节点?即按照所给例子中取得的数字应为10101,10102,1020101,1020102,10202
谢谢!
解决方案 »
- javamail如何获取邮件头信息中的IP地址呢?
- javaSE 如何实现JAVAME中的sprite的方法
- JAVA怎么学
- 请问数字转字符串的问题 如 32 转为 '0032'
- 对于编码这样的理解是否正确
- j2se,j2ee是不是有分别的JDK呀?
- java getImage时报错
- 我要上sourceforge.net,但它被封了,有别的办法吗?
- 如何实现一固定长度的直线在面板上的移动?
- 求教:[ODBC DRIVE MANAGE] Inbalid cursor state是什么意思?(急!)
- 请帮我实现这2个方法,谢谢
- eclipse为什么不从java目录下使用jre/bin下的rt.jar,而要在每个项目里加一个rt.jar呢?
list.add("101");
list.add("10101");
list.add("10102");
list.add("102");
list.add("10201");
list.add("10202");
list.add("1020101");
list.add("1020102");for (int i = 0; i < list.size(); i++) {
String strLeaf = list.get(i).toString();
boolean isLeaf = false;
for (int j = 0; j < list.size(); j++) { if (j != i) {
String strTemp = list.get(j).toString(); if (strTemp.indexOf(strLeaf) == 0) {
break;
}
}
if (j == list.size() - 1) {
isLeaf = true;
} }
if (isLeaf) {
System.out.println(strLeaf);
}这样可以吗
应该在数据库里面就反映这种树状结构的,不知道你的表是怎么设计的,我觉得应该这样 id parentId
101 null
10101 101
10102 101
102 null
10201 102
1020101 10201
1020102 10201
10202 102
... ...这样不就很好查询叶子节点吗 , 在id 中但不在parentId中的就是叶子
public test() {
List<String> list = new ArrayList();
list.add("101");
list.add("10101");
list.add("10102");
list.add("102");
list.add("10201");
list.add("10202");
list.add("1020101");
list.add("1020102"); for (int i = 0; i < list.size(); i++) {
if (FindChildNode(list, i) == -1)
System.out.println(list.get(i));
}
}
// 查找孩子节点。找到返回孩子节点的索引,否则返回-1
int FindChildNode(List<String> list, int iIndex) {
for (int i = 0; i < list.size(); i++) {
if (i != iIndex) {
if (list.get(i).indexOf(list.get(iIndex)) == 0)
return i;
}
}
return -1;
} public static void main(String[] args) {
new test();
}
}