Java : 在 O(n) 中打印列表的 hashmap
Java : Print hashmap of lists in O(n)
是否可以打印复杂度为 O(n) 的列表哈希图?
我正打算做这样的事情:
for(Map.Entry<String, ArrayList<Edge>> e : map.entrySet()){
for(Edge e1 : e.getValue())
System.out.println(e.getKey() + " = "+ e1.Out());
}
但这是 O(n^2)
我的哈希图:
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)
but this is O(n^2)
实际上是O(E)
其中E
是总边数
而且你无法改进1。
1 - 至少,从复杂性的角度来看。
是否可以打印复杂度为 O(n) 的列表哈希图?
我正打算做这样的事情:
for(Map.Entry<String, ArrayList<Edge>> e : map.entrySet()){
for(Edge e1 : e.getValue())
System.out.println(e.getKey() + " = "+ e1.Out());
}
但这是 O(n^2)
我的哈希图:
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)
but this is O(n^2)
实际上是O(E)
其中E
是总边数
而且你无法改进1。
1 - 至少,从复杂性的角度来看。