問題タブ [treemap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - TreeMap と HashMap のどちらのデータ構造を使用しますか? (ジャワ)
説明 | テキスト ファイルを読み取り、一意の各単語をアルファベット順に出力する Java プログラム。
Map<String, Integer>
プログラムは、単語と対応する出現頻度を格納する型の変数を宣言する必要があります。しかし、具体的なタイプはどれですか?TreeMap<String, Number>
またはHashMap<String, Number>
?
入力は小文字に変換する必要があります。
単語に次の文字が含まれていません。\t\t\n]f.,!?:;\"()'
出力例 |
備考 | Perl では、およそ 2 行のコードでこれを解決するエレガントなソリューションを見てきました。ただし、Javaで見たいです。
編集: そうそう、これらの構造の 1 つを (Java で) 使用して実装を示すと役に立ちます。
java - Java の TreeMap put() メソッドの奇妙な動作
次のコードは、Vector を文字列ベクトル (キーとして使用) と最後に整数 (値として使用) に分割します。
問題の TreeMap は、 Comparator を次のメソッドで使用して構築されます。このメソッドは、長さも考慮した辞書式の大文字と小文字を区別しない順序付けを課します (長いベクトルは、短いベクトルよりも常に「大きく」なります)。
さて、問題は...これが読み取られているテキストファイルに8つのエントリがあるにもかかわらず、マップは最大2つのエントリしか取得しません。1 つのエントリ (キー) が入力されるとそのままになりますが、値はスキャン プロセスを繰り返すたびに (ファイル内の行から新しいベクトルを読み取るたびに) 変化します。2 つを除く他のすべてのキーを破棄します。
これは私のコンパレータの問題ですか? それとも、TreeMap が put() で理解できないことをしているのですか?
java - TreeMapのキーセットのサブセットを取得する簡単な方法(Javaの場合)
Iteratorオブジェクトを使用して反復することなく、TreeMapから上位n個のキー要素(TreeMapがソートされていると思うのでtopを使用)を抽出することは可能ですか?
反復を行うことはできますが、nullなどをチェックするのは面倒です。
c# - Winform のビジュアル ツリーマップ
C# 2.0 WinForms で四角形のツリーマップを構築するためのフレームワークはありますか?
これに似たもの:
python - 「TreeDict」(またはツリーマップ) は実際に何に使用できますか?
Python で「TreeDict」クラスを開発しています。これは基本的に、Java の Treemap コレクション クラスと同様に、キーと値のペアをソートされた順序で取得できる dict です。
リレーショナル データベースの一意のインデックスを使用できる方法に基づいて、いくつかの機能を実装しました。たとえば、キーの範囲に対応する値、特定の値より大きい、小さい、または等しいキーを並べ替えた順序で取得できるようにする関数、文字列などです。またはソートされた順序で特定のプレフィックスを持つタプルなど。
残念ながら、このようなクラスを必要とする実生活の問題は思いつきません。Python でソートされた dict がない理由は、実際には、それだけの価値があるほど頻繁に必要とされないためだと思いますが、間違っていることを証明したいと思います。
「TreeDict」の特定のアプリケーションを考えられますか? このデータ構造によって最もよく解決される実際の問題はありますか? これが価値があるかどうかを確実に知りたいだけです。
java - J2MEは、java.util.TreeMapの実装を見つけられません
私が試していること
java.util.TreeMap
J2MEアプリケーションで使用しようとしています。TreeMap
これはJ2SEには存在しますが、J2MEには存在しないことを知っているのでTreeMap
、J2SE6.0をJ2ME1.2に移植し、MidletJarに含めるように努力しました。これには、コレクションフレームワークの半分の移植が含まれていましたが、今では(理論的には)それで終わり、テストしたいと思っています。
エラー
しかし、SUN J2ME SDK 3.0エミュレーター(DefauldClclPhone2)でアプリを起動すると、次の例外が発生します。
実際のデバイスで"Error in Application"
は、一致するSDKが現在ないため、実際の例外は表示されません。
そのエラーについて何がそんなにスタンジなのか
私のアプリケーションが事前検証プロセスを正常に実行したという事実に戸惑っています。私はいつも、クラスが見つからない(そして数日前に多くのクラスがあった)と、事前検証ツールでエラーが発生することを経験しました。NoClassDefFoundError
したがって、事前検証が成功した後は、デバイス上に何も存在しない可能性があると結論付けました。
詳細
私のjar内のディレクトリ構造は次のようになります。
TreeMap.class
また、それがJava1.2クラスのファイル形式であることを確認しました。
CDLC1.0とMIDP1.0をターゲットにしているので、事前検証ツールはクラスパスを使用しています${wtk.home}/lib/cldc_1.0.jar, ${wtk.home}/lib/midp_1.0.jar
考えてみてください。J2MEクラスローダーに、アプリケーションjarからjava.util.*
またはクラスをロードできないようにする特別なチェックはありますか?java.lang.*
私はそれを聞いたことがありませんが、おそらく彼らはセキュリティ機能としてこのようなことをしましたか?
結論と解決策
Joachim Sauerが指摘したように、クラスローダーは、クラスjava.*
を定義した場合、クラスをロードしません。そのため、それらを別のパッケージ、実際にはに移動する必要がありましたcom.companyname.j2meport.java.util
。私自身のコードはそこからそれらのクラスをインポートできますが、これはjava.util.TreeMapを参照するクローズドソースのサードパーティライブラリのオプションではありません。
私はついに、Retrotranslatorの拡張メカニズムを使用して、これらの参照を自分のクラスに変更することができました。これは、ビルドプロセスですでに使用していたツールですが、その機能については完全には認識していませんでした。
他のJ2SEライブラリに依存している私のJ2SEライブラリは、J2MEで実行されるようになりました。
java - TreeMap を反復処理するには?
重複の可能性:
マップ内の各エントリを反復するにはどうすればよいですか?
を反復処理したいのですTreeMap
が、特定の値を持つすべてのキーについて、それらを新しい に追加したいと考えていますTreeMap
。これどうやってするの?
java - Java:SortedMap、TreeMap、Comparable?使い方?
いずれかのフィールドのプロパティに従って並べ替える必要のあるオブジェクトのリストがあります。これを行うには、SortedMapとComparatorsが最良の方法だと聞きました。
- 並べ替えるクラスとComparableを実装しますか、それとも新しいクラスを作成しますか?
- SortedMapをインスタンス化してComparatorに渡すにはどうすればよいですか?
- 並べ替えはどのように機能しますか?新しいオブジェクトが挿入されると、すべてが自動的に並べ替えられますか?
編集: このコードは私にエラーを与えています:
(Ktrは実装しますComparator<Ktr>
)。Eclipseは、のようなものを期待していると言っているTreeMap<K, V>
ので、私が提供しているパラメーターの数が正しくありません。