【问题标题】:Making a tree from two column csv file in java在java中从两列csv文件制作一棵树
【发布时间】:2019-04-05 05:54:29
【问题描述】:

我想使用两列 CSV 文件获取节点的所有子节点的 ID 和计数,其中一列是父 ID,一列是子 ID。

例如

Child Id   Parent Id
C1         C2
C3         C1
C4         C3

我想要这样的结果:

C2  C1, C3, C4 3

【问题讨论】:

  • 那么,是什么阻止你这样做?
  • 我不知道如何在 java 中做到这一点
  • 你知道如何用其他语言做到这一点吗?
  • 如果要获取特定节点的子节点数,则必须计算 Parent Id 列的值等于您的节点的行数(假设您没有重复项)。跨度>
  • 父 id 也可以在子 id 中找到,因为它也有一些父树结构。参见例如 C1 在父 ID 和子 ID 中。

标签: java lookup


【解决方案1】:

不清楚。你有它的一些代码或视觉表示吗? 如果我正确理解,您可以不制作树,而可以制作 Map,其中 Key 是 ParentId,value 是您的 Child 或 Object 的整数 可能看起来像

class Child {
List<String> ids;
int count;

    public Child(String id) {
        count=1;
        if (ids.size() < 1) {
            ids = new ArrayList<>();
        }
        ids.add(id);
    }

        public Child setChild(String id) {
        if (ids.size() < 1) {
            ids = new ArrayList<>();
        }
        ids.add(id);
        count++;
        return this;
    }

class Main{

//your logic
Map<String, Child> map = new HashMap<>();
    if (!map.containsKey(parent)){
        map.put(parent,new Child(id));
    }else
    map.computeIfPresent(parent, (key, value) -> value.setChild(id));
}

附言

如果你只需要数你的孩子,那么就这样做

 String parent = "";
 Map<String, Integer> map = new HashMap<>();

if (!map.containsKey(parent)) {
      map.put(parent, 1);
} else {
      map.computeIfPresent(parent, (key, value) -> new Integer(value.intValue()+1));
        }

这里使用了伪父,但你应该插入你自己的父。

【讨论】:

  • 如果你只需要 childs count instead full id and count, its 更容易,因为你不需要任何对象,只有当父母已经在地图中时你会增加计数器
  • 如何只获取没有 id 的计数,请用代码告诉我
  • 看看我的 p.s 。您自己的父母应该类似于String [] line; String parent = line[i],其中i 是您文件的每一行。当然你也应该分隔父母和孩子,但并不难,你可以在网上找到它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2023-01-03
  • 1970-01-01
相关资源
最近更新 更多