小编NoB*_*ect的帖子

MongoDB 3.4 - 获取没有根文档的子文档数组

我有一个projects包含以下文件的集合:

{
        "_id" : ObjectId("589eff3fee3d13019843f55a"),
        "name" : "Project A",
        "desc" : "test",
        "numofvms" : 0,
        "templates" : [
                {
                        "_id" : ObjectId("589e4c14ee3d131bac8b403c")
                },
                {
                        "_id" : ObjectId("589e4c1dee3d131bac8b403d")
                }
        ],
        "nodes" : [
                {
                        "_id" : ObjectId("589eff8f2bb59057c3f9b89d"),
                        "name" : "Node A"
                },
                {
                        "_id" : ObjectId("589eff962bb59057c3f9b89e"),
                        "name" : "Node B"
                },
                {
                        "_id" : ObjectId("589eff982bb59057c3f9b89f"),
                        "name" : "Node C"
                },
                {
                        "_id" : ObjectId("589eff9a2bb59057c3f9b8a0"),
                        "name" : "Node D"
                }
        ],
        "links" : [ ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试接收nodes给定文档(项目)的子文档(字段)数组,但没有根文档。结果应如下所示:

[ …
Run Code Online (Sandbox Code Playgroud)

arrays field mongodb subdocument

7
推荐指数
1
解决办法
3199
查看次数

Java HashSet 包含返回 false,即使覆盖了 equals() 和 hashCode()

我像这样初始化 HashSet:

private HashSet<Rule> ruleTable = new HashSet<Rule>();
Run Code Online (Sandbox Code Playgroud)

我的对象(抽象类的子类)的equals()hashCode()方法如下所示:TcpRuleRule

@Override
public int hashCode() {
    // Ignore source Port for now
    return (this.getSrcPool() + ":" + this.getDstPool() + ":" + this.getProtocol() + ":" + this.dstTcp).hashCode();
}

@Override
public boolean equals(Object obj) {
    if (!(obj instanceof TcpRule))
        return false;
    if (obj == this)
        return true;

    TcpRule r = (TcpRule) obj;
    return (this.getSrcPool().equals(r.getSrcPool()) && this.getDstPool().equals(r.getDstPool()) && this.getProtocol().equals(r.getProtocol()) && this.getSrcTcp() == r.getSrcTcp() && this.getDstTcp() == r.getDstTcp());
}
Run Code Online (Sandbox Code Playgroud)

我什至写了一个简单的单元测试,它没有给出任何错误: …

java contains equals hashcode hashset

5
推荐指数
1
解决办法
1601
查看次数

Java DocumentBuilder - XML 文件中的错误缩进

我尝试使用 DocumentBuilder 用 Ja​​va 编写一个简单的 XML 文件。我希望 XML 文件看起来像这样:

<outer>
     <inner>
          <element name="WEB"/>
          <element name="WEB"/>
          <element name="WEB"/>
     </inner>
</outer>
Run Code Online (Sandbox Code Playgroud)

但它生成它是这样的:

<outer>
     <inner>
          <element name="WEB"/>
          <element name="WEB"/>
     <element name="WEB"/>
     </inner>
</outer>
Run Code Online (Sandbox Code Playgroud)

为什么第三个元素与其他两个元素的缩进不同?注意:我再次读取 XML 文件以模拟项目中的一种方法,其中读取 XML 文件,添加一个元素并将其保存到 XML 文件。这是我的代码:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.IOException;

public class main {
    private static String FILEPATH = "/tmp/xmltest.xml";
    private static DocumentBuilderFactory docFactory;
    private static DocumentBuilder docBuilder;
    private static TransformerFactory …
Run Code Online (Sandbox Code Playgroud)

java xml indentation domparser

3
推荐指数
1
解决办法
2135
查看次数