简单算法形成树结构

方法一: 

@Data
public class XXXXVO implements Serializable {

    private static final long serialVersionUID = -6328566979294023158L;

    private String groupName;

    private String groupId;

    private String type;

    List<XXXXVO> children = new ArrayList<>();

    private String id;

    private String parentId;

}

private void ldapGroupTreeHandle(List<XXXXVO> list) {
        Map<String, List<XXXXVO>> listMap = list.stream().collect(Collectors.groupingBy(XXXXVO::getParentId));
        List<XXXXVO> deleteList = new ArrayList<>();
        list.forEach(group -> {
            List<XXXXVO> entityList = listMap.get(group.getId());
            if (org.apache.commons.collections.CollectionUtils.isNotEmpty(entityList)) {
                group.setChildren(entityList);
                deleteList.addAll(entityList);
            }
        });
        list.removeAll(deleteList);
    }

方法二:

private List<XXXVO> getTree(List<GroupEntity> lists) {
    List<XXXVO> treeList = new ArrayList<>();
    for (GroupEntity groupEntity : lists) {
        if (groupEntity.getParentId().equals(Constant.STR_MINUS_ONE)) {
            XXXVO XXXVO = new XXXVO();
            BeanUtils.copyProperties(groupEntity, XXXVO);
            XXXVO.setChildren(getChildrenNode(XXXVO.getId(), lists));
            treeList.add(XXXVO);
        }
    }
    return treeList;
}


private List<XXXVO> getChildrenNode(String id, List<GroupEntity> allList) {
    List<XXXVO> newTreeList = new ArrayList<>();
    for (GroupEntity groupEntity : allList) {
        if (groupEntity.getParentId().equals(Constant.STR_MINUS_ONE)) {
            continue;
        }
        if (groupEntity.getParentId().equals(id)) {
            XXXVO XXXVO = new XXXVO();
            BeanUtils.copyProperties(groupEntity, XXXVO);
            XXXVO.setChildren(getChildrenNode(XXXVO.getId(), allList));
            newTreeList.add(XXXVO);
        }
    }
    return newTreeList;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java语言的数据结构和简单算法的代码可以从多个来源获取,比如在线资源,书籍,课程和视频教程等。此外,也可以使用Java开发工具,如Eclipse,NetBeans,IntelliJ等软件来创建和编写Java语言的数据结构和简单算法代码。 ### 回答2: Java语言中的数据结构简单算法代码有很多,下面以链表为例进行说明。 链表是一种常用的数据结构,它由一系列节点组成,每个节点包含了数据和指向下一个节点的引用。我们可以使用Java语言来实现链表并实现一些简单算法。 首先,我们定义一个链表的节点Node类。这个类包含一个数据域和一个指向下一个节点的引用域。 ``` class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } } ``` 然后,我们定义一个链表的类LinkedList。这个类包含链表的头节点和一些操作方法,比如添加节点、删除节点等。 ``` class LinkedList { Node head; public LinkedList() { this.head = null; } public void addNode(int data) { Node newNode = new Node(data); if (head == null) { head = newNode; } else { Node currentNode = head; while (currentNode.next != null) { currentNode = currentNode.next; } currentNode.next = newNode; } } public void deleteNode(int data) { if (head == null) { return; } if (head.data == data) { head = head.next; return; } Node currentNode = head; while (currentNode.next != null) { if (currentNode.next.data == data) { currentNode.next = currentNode.next.next; return; } currentNode = currentNode.next; } } } ``` 以上是一个简单的链表的实现,其中包括了添加节点和删除节点的方法。 除了链表,还可以使用Java语言实现其他常见的数据结构,比如栈、队列、二叉树等,每种数据结构都有相应的操作方法,如入栈、出栈、入队、出队、插入节点、删除节点等。 以上是关于Java语言数据结构简单算法代码的回答。希望能对你有所帮助。 ### 回答3: Java语言中常用的数据结构包括数组、链表、栈、队列、树、图等。这些数据结构常用于解决不同的问题,而简单算法代码通常用于对这些数据结构进行基本操作。 以数组为例,Java提供了丰富的操作方法,比如创建一个数组、获取数组的长度、访问数组中的元素、修改数组中的元素等。 下面是一个简单Java代码示例,用于实现对数组进行遍历并输出每个元素的值: ``` public class ArrayTraversal { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; for (int i = 0; i < array.length; i++) { System.out.println("Element at index " + i + ": " + array[i]); } } } ``` 在上述代码中,定义了一个长度为5的整型数组,并使用for循环遍历数组的每个元素。在每个循环迭代中,通过`array[i]`的方式访问数组元素,并使用`System.out.println()`方法输出元素的值及其索引。 除了数组,链表也是常见的数据结构之一。下面是一个简单Java代码示例,用于实现链表的创建、插入元素、删除元素和遍历等基本操作: ``` class Node { public int data; public Node next; public Node(int data) { this.data = data; this.next = null; } } public class LinkedListOperations { public static void main(String[] args) { Node head = new Node(1); Node second = new Node(2); Node third = new Node(3); head.next = second; second.next = third; // 遍历链表并输出每个元素的值 Node current = head; while (current != null) { System.out.println("Element: " + current.data); current = current.next; } } } ``` 在上述代码中,定义了一个链表的节点类`Node`,并在`LinkedListOperations`类中创建了一个包含3个节点的链表。通过给节点之间的`next`指针赋值来连接节点,从而形成链表。使用一个指针`current`遍历链表,并输出每个节点的数据。 以上是简单Java语言数据结构的算法代码示例,它们可以作为算法学习和实践的基础。实际应用中,还可以根据需求选择合适的数据结构和算法进行解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值