繁体   English   中英

Java:在 O(n) 中打印列表的 hashmap

[英]Java : Print hashmap of lists in O(n)

是否可以在 O(n) 中打印列表的 hashmap?

我正要做这样的事情:

for(Map.Entry<String, ArrayList<Edge>> e : map.entrySet()){
   for(Edge e1 : e.getValue())
      System.out.println(e.getKey() + " = "+ e1.Out());
}

但这是 O(n^2)

我的 hashmap:

private Map<K, List<Edge<K,E>>> G = null;

我试图做这样的事情:

public void getEdges(){
    getEdges(0);
}
private void getEdges(int i){
        if(i==this.G.size()){
            return;
        }else{
        List<Edge<K, E>> edgeList = this.G.get(this.G.keySet().toArray()[i]);
        for(Edge<K, E>  e : edgeList) {
            System.out.println("Edges : "+e.toString());
        }
        getEdges(i+1);
    }
}

但这不是 O(n)

但这是 O(n^2)

它实际上是O(E) ,其中E是边的总数。

而且您无法改进1


1 - 至少,从复杂性的角度来看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM