私が直面している状況は次のとおりです。ノードと呼ばれる反復可能なオブジェクトがあります。(約数千) 各ノードには、キーと値のペアが多数含まれています。そして、私のアルゴリズムは新しいノード (myNode と呼びます) を作成し、反復可能なセット内の各ノードと、反復可能なセット内の各ノードをチェックします: ノード内の各ペア (キー、値): myNode にペアのキーが含まれている場合: myNode の対応する値が大きい: 新しい値に置き換えます。それ以外: myNode.put(キー、値)
現在、私はこれに HashMap を使用していますが、かなり遅く、HashMap を ArrayList に置き換えた後、実際にはより良い結果が得られましたが、これは非常に奇妙です。誰かが私のプログラムのパフォーマンスを向上させるために使用するより良いデータ構造を提案できますか??
ありがとうございました !
EDI: コード
ArrayList<Long> newDist = new ArrayList<Long>();
HashMap<Long, Long> myNode = new HashMap<Long, Long>();
for (Node i : nodes){//copy neighbors to set
Set<Long> view = i.keySet();
for (Long j : view) {
if (!(myNode.containsKey(j))) {
myNode.put(j, i.get(j));
} else if (myNode.get(j) > i.get(j)) {
myNode.put(j, i.get(j));
}
}
}
context.write(key, myNode);