【发布时间】:2017-02-13 17:42:27
【问题描述】:
想象存储在有序列表中的分层路径及其验证
List<String> path = Lists.newArrayList("path","to","end");
Iterator<String> iterator = path.iterator();
while (iterator.hasNext()) {
if (iterator.next() == null) {
while (iterator.hasNext()) {
if (iterator.next() != null) {
throw new Exception("Invalid path");
}
}
}
}
算法非常简单。
只有叶子或节点及其所有后代必须为空。
有效路径:
"path", "to", "end"
"path", "to", null
"path", null, null
null, null, null
无效路径:
"path", null, "end"
null, null, "end"
null, "to", "end"
null, "to", null
我正在寻找以功能样式重写它的方法。
【问题讨论】:
-
我认为您的“有效路径”中有一些拼写错误,这使您的问题变得混乱。你的意思是在
null周围加上引号是那些地方吗? -
@4castle thx,我修正了错字
-
非功能性解决方案有什么问题?您自己说过-您的命令式算法简单明了且相对简单(我只会删除第二个嵌套的 while,因为您不需要它)。它不会从功能重写中获得任何好处,而且很可能只会获得复杂性(例如,我几乎可以肯定,功能实现将需要
Tuple类)。
标签: java lambda functional-programming java-8 java-stream