gpt4 book ai didi

java - 具有搜索功能的 TreeModelAdapter

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:46 24 4
gpt4 key购买 nike

我目前正在使用 Tapestry 5.3,并使用树组件来显示有 4 个级别的帐户列表的层次结构。但现在我在这种情况下很难使用搜索功能:

Level 1-1
|_ _ _ Level 2-1
|_ _ _ Level 2-2
    |_ _ _ Level 3-1
|_ _ _ Level 3-2
   | |_ _ _ Level 4-1
| |_ _ _ Level 4-2
|_ _ _ Level 3-3

例如。用户想要搜索帐户级别4-1,树应该这样显示

Level 1-1
|_ _ _ Level 2-2
  |_ _ _ Level 3-2
       |_ _ _ Level 4-1

有人可以帮我解决这个逻辑问题吗?谢谢。

最佳答案

我终于明白了。

我创建了一个新类AccountTreeModelAdapter这是实现 TreeModelAdapter 。您可以覆盖 getChildren方法并将您的搜索逻辑放在那里。对我来说,它在这个流程中工作:

  • 添加setSearchedAccounts(List<Account> searchedAccounts) AccountTreeModelAdapter中的方法
  • 从主类中设置它的值
  • getChildren方法,使用Iterator迭代整个列表(所有帐户)并与 searchedAccounts 中每个帐户的代码进行一一比较列表(在 Java 8 中使用 searchedAccounts.stream().filter())。

瞧,现在树将只显示您想要的帐户。但是,如何显示父级呢?到目前为止,树不会一次又一次地显示父级、父级的父级和父级的父级,直到到达 ROOT。

为了实现此目的,我在数据库中为我的帐户实体创建一个新列。这是 accountPath 。因此,每次用户创建帐户时,都会显示 accountPath将像这样工作:

Account "ABC" (ID: 1)
|_ _ _ "XYZ" (ID: 2)
    |_ _ _ "OPQ" (ID: 3)
       |_ _ _ "STU" (ID: 4)

帐户“ABC”将没有路径(因为它是 ROOT)。帐户“XYZ”将具有路径-1-帐户“OPQ”将具有路径-1-2-帐户“STU”的路径为 -1-2-3-

要获取每个家长的 ID,请使用 string.split("-")

因此,如果您希望树显示父级帐户,只需将父级帐户添加到 searchedAccounts 即可。列表。

仅此而已。

关于java - 具有搜索功能的 TreeModelAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com