小编jon*_*jon的帖子

函数式编程,Scala映射和向左折叠

折叠上有什么好的教程?

原始问题,从删除中恢复以提供其他答案的上下文:

我正在尝试实现一种方法来查找矩形,圆形,位置和所有扩展形状的组的boudning框.组基本上是一组形状

abstract class Shape  
case class Rectangle(width: Int, height: Int) extends Shape  
case class Location(x: Int, y: Int, shape: Shape) extends Shape  
case class Circle(radius: Int) extends Shape  
case class Group(shape: Shape*) extends Shape  
Run Code Online (Sandbox Code Playgroud)

我得到了除第一组之外的所有三个计算的边界框.所以现在对于边界框方法我知道我应该使用map并向左折叠为Group,但我无法找到创建它的确切语法.

object BoundingBox {  
  def boundingBox(s: Shape): Location = s match {  
    case Circle(c)=>   
      new Location(-c,-c,s)  
    case Rectangle(_, _) =>  
      new Location(0, 0, s)  
    case Location(x, y, shape) => {  
      val b = boundingBox(shape)  
      Location(x + b.x, y + b.y, b.shape)  
    }  
    case Group(shapes …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala map fold

53
推荐指数
3
解决办法
5万
查看次数

加速xpath

我有一个1000条目文档,其格式类似于

<Example>
     <Entry>
          <n1></n1>
          <n2></n2>
      </Entry>
      <Entry>
          <n1></n1>
          <n2></n2>
      </Entry>
      <!--and so on-->
Run Code Online (Sandbox Code Playgroud)

这里有超过1000个Entry节点.我正在编写一个Java程序,它基本上逐个获取所有节点并对每个节点进行一些分析.但问题是节点的检索时间随着它的增加而增加.例如,检索第一个节点100毫秒以检索第二个节点需要78毫秒,并且它继续增加.要检索999节点,需要5秒以上.这非常慢.我们将此代码插入到包含超过1000个条目的XML文件中.有些像数百万.解析整个文档的总时间超过5分钟.

我正在使用这个简单的代码来遍历它.这nxp是我自己的类,它具有从xpath获取节点的所有方法.

nxp.fromXpathToNode("/Example/Entry" + "[" + i  + "]", doc);    
Run Code Online (Sandbox Code Playgroud)

并且doc是该文件的文档.i是要检索的节点的否.

当我尝试这样的事情时

List<Node> nl = nxp.fromXpathToNodes("/Example/Entry",doc);  
      content = nl.get(i);    
Run Code Online (Sandbox Code Playgroud)

我面临同样的问题.

任何人都有关于如何加速节点的tretirival的任何解决方案,因此从XML文件获取第一个节点以及1000个节点需要相同的时间.

谢谢


这是xpathtonode的代码.

public Node fromXpathToNode(String expression, Node context)  
{  
    try  
    {  
        return (Node)this.getCachedExpression(expression).evaluate(context, XPathConstants.NODE);  
    }  
    catch (Exception cause)  
    {  
        throw new RuntimeException(cause);  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

这是fromxpathtonodes的代码.

public List<Node> fromXpathToNodes(String expression, Node context)  
{  
    List<Node> nodes = new ArrayList<Node>();  
    NodeList results = …
Run Code Online (Sandbox Code Playgroud)

java performance xpath nodelist nodes

18
推荐指数
3
解决办法
2万
查看次数

标签 统计

fold ×1

functional-programming ×1

java ×1

map ×1

nodelist ×1

nodes ×1

performance ×1

scala ×1

xpath ×1