私はTreeMapのキーを検索しなければならない割り当てをしています(TreeMapが見つかったファイルにマップされていますが、このツリーマップは逆インデックスです)。クエリファイル内のプログラム。しかし、効率を上げるために、私の教授は、クエリワードで始まるキーを探すときにTreeMapのすべてのキーを繰り返し処理するのではなく、反復処理が必要なキーだけを反復したいと思っています。たとえば、クエリの単語がCで始まる場合は、Cで始まるキーだけを反復する必要があります。これにアプローチする方法のアイデアはありますか?TreeMapのPORTIONを反復処理する方法は?
0
A
答えて
1
TreeMapのsubMap()
メソッドを使用して、調べたいキーの範囲のみを含むSortedMapを取得します。その後、そのSortedMapを反復処理します。
0
ここ@ottomeisterが提案するものの基本的な実装は次のとおりです。
public class Tester{
public static void main(String a[]){
TreeMap<CustomObject,String> tm = new TreeMap<CustomObject,String>();
tm.put(new CustomObject(4,"abc"),"abc");
tm.put(new CustomObject(7,"bcd"),"bcd");
tm.put(new CustomObject(25,"cde"),"cde");
tm.put(new CustomObject(18,"def"),"def");
tm.put(new CustomObject(2,"efg"),"efg");
tm.put(new CustomObject(8,"fgh"),"fgh");
tm.put(new CustomObject(3,"aab"),"aab");
tm.put(new CustomObject(13,"aab"),"abb");
Map<CustomObject, String> sub = tm.subMap(new CustomObject(9,""),new CustomObject(20,""));
for(Map.Entry<CustomObject,String> entry : sub.entrySet()) {
CustomObject key = entry.getKey();
String value = entry.getValue();
System.out.println(key.getId() + " => " + value);
}
}
}
class CustomObject implements Comparable<CustomObject>{
private int id;
private String Name;
CustomObject(int id, String Name){
this.id = id;
this.Name = Name;
}
@Override
public int compareTo(@NotNull CustomObject o) {
return this.id - o.id;
}
public int getId(){
return this.id;
}
}
出力: 13 => ABB 18 => DEF
関連する問題
- 1. TreeMapを反復処理する方法は?
- 2. ソートされたtreemapを反復処理する:java.util.ConcurrentModificationException
- 3. QStringListを反復処理する方法
- 4. Rubyはを反復処理し、方法
- 5. カーソルの反復処理方法
- 6. 処理(反復処理)
- 7. 反復処理
- 8. 反復処理
- 9. 反復処理
- 10. 反復処理
- 11. 反復処理
- 12. 反復処理
- 13. すべてのContentresolverエントリを反復処理する方法は?
- 14. XPath:すべてのテキストノードを反復処理する方法は?
- 15. Numpyの配列の列を反復処理する方法は?
- 16. struts2のオブジェクトのコレクションを反復処理する方法は?
- 17. ベロシティテンプレートのネストマップを反復処理する方法は?
- 18. このn次元データセットを反復処理する方法は?
- 19. StringTemplate - リスト内のリストを反復処理する方法は?
- 20. vb.netでオブジェクトのプロパティを反復処理する方法は?
- 21. stringmapのキーを反復処理する方法は?
- 22. isArray()がQScriptValueの項目を反復処理する方法は?
- 23. 配列内のオブジェクト値を反復処理する方法は?
- 24. 文字列の文字を反復処理する方法は?
- 25. eclipseテンプレートのメソッドパラメータを反復処理する方法は?
- 26. JSONを複数のレベルで反復処理する方法は?
- 27. オブジェクトのArrayListを反復処理する方法は?
- 28. データグリッドの行をプログラムで反復処理する方法は?
- 29. 同じタグのタグを反復処理する方法は?
- 30. 配列内のオブジェクトを反復処理する方法は?
私はあなたは、JavaのTreeMapを意味すると仮定しますか? TreeMapのキーをより正確に記述できますか?また、「必要な鍵だけ」についてもっと具体的にすることができますか?しかし、一般的には、TreeMapは完全に完全にしか反復することができません。 – nplatis
はい、Java TreeMapです。申し訳ありませんが、これらのキーはTreeMapのString型です。したがって、クエリワードと同じ文字で始まるキーを反復したいだけです。私の教授によると、TreeMapの部分だけを繰り返す方法がありますが、私はそれを可能な限り前提としています。これは、 – maxicecil21