java 函数式编程中递归式数据遍历的技巧:linkedlist 的递归遍历:使用 stream.iterate() 创建无限流并使用 foreach() 遍历。tree 的递归遍历:使用 optional.ifpresent() 进行递归遍历,遍历节点及其子节点。实战案例:解析 json 数据,使用递归遍历提取嵌套对象中的子项名称。
Java 函数式编程中递归式数据遍历的技巧
函数式编程提供了处理递归数据结构的强大工具,例如链表和树。递归遍历这些结构涉及以递归方式分解数据,并在每个子部分上操作。
LinkedList 的递归遍历
立即学习“Java免费学习笔记(深入)”;
Stream.iterate() 方法可以创建无限流,并使用 forEach() 方法对其进行操作。该示例展示了如何遍历并打印链表:
class Node { int data; Node next; } public class LinkedListTraversal { public static void main(String[] args) { // 创建链表 Node head = new Node(); head.data = 1; head.next = new Node(); head.next.data = 2; head.next.next = new Node(); head.next.next.data = 3; // 递归遍历链表 Stream.iterate(head, Node::getNext) // 创建无限流 .forEach(node -> System.out.println(node.data)); // 遍历流并打印数据 } }
登录后复制
Tree 的递归遍历
树结构可以表示为嵌套对象,其中每个节点包含对子节点的引用。使用 Optional.ifPresent() 进行递归遍历的示例如下:
class TreeNode { int data; List<TreeNode> children; } public class TreeTraversal { public static void main(String[] args) { // 创建树 TreeNode root = new TreeNode(); root.data = 1; root.children = List.of( new TreeNode(2), new TreeNode(3), new TreeNode(4) ); root.children.get(0).children = List.of(new TreeNode(5)); root.children.get(2).children = List.of(new TreeNode(6)); // 递归遍历树 traverse(root); } private static void traverse(TreeNode node) { if (node == null) return; System.out.println(node.data); for (TreeNode child : node.children) { traverse(child); } } }
登录后复制
实战案例
考虑以下 JSON 数据:
{ "name": "John", "age": 30, "children": [ { "name": "Alice", "age": 10 }, { "name": "Bob", "age": 12 } ] }
登录后复制
使用递归遍历,可以很容易地提取所有子项的名称:
import com.google.gson.Gson; class Main { public static void main(String[] args) { // 将 JSON 数据解析为对象 JsonObject json = new Gson().fromJson(jsonStr, JsonObject.class); // 递归提取子项名称 List<String> names = new ArrayList<>(); traverse(json.get("children"), names); // 打印子项名称 for (String name : names) { System.out.println(name); } } private static void traverse(JsonElement element, List<String> names) { if (element.isJsonObject()) { JsonObject obj = element.getAsJsonObject(); names.add(obj.get("name").getAsString()); traverse(obj.get("children"), names); } } }
登录后复制
以上就是Java函数式编程中递归式数据遍历的技巧的详细内容,更多请关注抖狐科技其它相关文章!
-
建议所有iPhone升级!苹果iOS 17.7正式版发布:修复16个漏洞
9月17日消息,今天凌晨,苹果同时发布iOS 18正式版和iOS 17.7正式版更新,前者是年度大版本更新,后者则对漏洞进行了修复。更新日志显示,iOS 17.7提供了重要安全性修复,苹果建议所有...
-
Win11蓝牙开启方法
问题:如何在 windows 11 电脑上开启蓝牙功能?简单说明:windows 11 更新了界面和设置,给用户带来了不小的使用不便。本篇文章将由 php小编小新带领大家了解 win11 系统中开启蓝...
-
Win10安装更新后无法还原解决方法
对于使用 win10 系统的用户来说,在安装更新后,系统还原功能可能会失灵。如果您遇到了这样的问题,请不要担心。php小编草莓将为您提供详细的教程,帮助您轻松解决这一问题。请继续阅读本文,了解具体的操...
-
下一站江湖2挑战何留如何触发 挑战何留触发条件
在《下一站江湖2》的江湖世界中,何留的挑战条件颇为独特。传说他是一位隐居在桃花坞的高深莫测的人物,武学造诣令人惊叹。想要向何留发起挑战,江湖豪杰们需要满足特定的触发条件和经历。php小编小新将为你揭秘...
-
HTPX 简介:适用于 JavaScript 和 Nodejs 的轻量级多功能 HTTP 客户端
作为开发人员,我们的 web 应用程序通常需要一个可靠且高效的 http 客户端,无论我们是在浏览器中使用 javascript 还是在服务器端使用 node.js 进行构建。这就是我创建 htpx...