私はApache Spark 2.1とJava 8を使用してKafkaストリーミングサービスを行っています。にトピック/パーティションのペアを埋め込むためにネストされたfor
ループを使用します。このネストされたforループをO(N^2)未満にすることは可能ですか?
別の方法論を使用して、このネストされたfor
ループをO(N^2)から減らすことはできますか?ここで
コードです:
private static List<TopicAndPartition> createTAndPList(List<String> topics, List<String> partitions)
throws ConsumerException {
if (topics.size() != partitions.size()) {
throw new ConsumerException("Cannot create list with unequal number of topics and parititons,");
}
List<TopicAndPartition> topicsAndPartitions = new ArrayList<>();
for (int t = 0; t < topics.size(); t++) {
for (int p = 0; p < Integer.parseInt(partitions.get(t)); p++) {
topicsAndPartitions.add(new TopicAndPartition(topics.get(t), p));
}
}
return topicsAndPartitions;
}
はFYI:(管理)私が原因私のコントロールを超えたパワーにカフカ8の上方に使用することを防止しています
このコードは多く呼び出されますか?これがちょうどいくつかのデータを初期化していて、一度起こるならば、私はちょうどこのまっすぐなアプローチに行きます。 –
各ネストされたループは1つの要素をリストに追加するので、すべての要素を追加する必要がない場合を除いて、複雑さを減らす方法を提案していません。 – assylias
正しい結果がN^2要素のArrayListであれば、それを満たすのにO(n^2)が必要です。 – Assafs