問題タブ [treeset]
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 - compareToとTreeSetの問題
TreeSetsが作業中のゲームからユニットを削除する際に問題が発生しました。タワーディフェンスゲームを作っていますが、パスは設定された長さのさまざまなブロックに分割されています。ブロックは、その中のユニットとパス上の次のブロックを認識しています。ユニットがブロックの境界を離れると、ブロックはそのユニットをリストから削除し、次のブロックに追加します。
私はTreeSetを使用して、ブロック内のユニットの順序を追跡しています。これにより、パスに沿って最も遠いユニットを特定できます。ユニットには、パスに沿ってどれだけ離れているかを追跡する位置フィールドがあり、位置が高いほど遠くになります。
一部のブロックで、TreeSetからユニットを削除しようとすると、removeがfalseを返すことに気付きました。いくつかのブレークポイントを使用しましたが、ユニットが実際にTreeSetにあることがわかります。したがって、問題は攻撃ユニットのcompareToメソッドにあると思います。
これがcompareToの私のコードです:
私が問題に気付いているブロックの1つは、ユニットが上部に入り、途中で角を曲がって右側から出るブロックです。ブロックには2つのArrayListがあります。1つは上から下に移動するユニット用(enPath)で、もう1つは左から右に移動するユニット用(exPath)です。これが私が問題を抱えているコードです:
ユニットはexPathとユニット(TreeSet)にありますが、units.remove(unit)はfalseを返します。これを修正するためにAttackingUnitのcompareToを変更する方法に関するアイデアはありますか?
android - Android辞書TreeSetより速い読み込み時間
私の辞書には300000語があります(実際には、AndroidデバイスのSDカードにtxt形式(改行で区切られています)で保存されています)。このデータ構造にtxtファイルから単語(String-s)を挿入するのにできるだけ時間がかからないデータ構造を構築したいと思います。そして、このDSは、単語が辞書(このDS)に存在するかどうかをチェックするために超高速でなければなりません。私はいくつかの組み込みDSを試しましたが、最速のIMOはTreeSetでした。DSの挿入/作成がより高速で、検索用のTreeSetと同等である他の(組み込みではない)DSはありますか?
そしてもう1つ、txtファイルを再配置する(単語を適切な順序に並べる)ことで、TreeSetの挿入を高速化する方法があります。
よろしく
java - TreeSet でイテレータを使用する
状況:カスタム オブジェクトの TreeSet があり、カスタム Comparator も使用しています。この TreeSet で使用する反復子を作成しました。
質問: while ループ内で TreeSet に新しい要素を追加すると、その新しい要素はすぐに並べ替えられるかどうかを知りたいです。つまり、while ループ内に新しい要素を追加し、それが現在 c で保持している要素よりも小さい場合、次の反復では、最後の反復と同じ要素を c で取得することになりますか?(並べ替えの後、新しく追加された要素は現在の要素の前の場所を占有するためです)。
java - (ツリー)セットを整数で埋める最短の方法は?
(ツリー)セットを作成し、2000 整数で埋めたい場合。0 から開始するには、1、2、3、4...2000 を追加します。最善の方法は何ですか?
私はそれをできた
または add(i);i++; でしばらく待ちます。
しかし、もっと簡単で短い方法はありますか?
ありがとうございました!
java - TreeSet contains メソッドが機能しない
カスタムのデータをTreeSet
. カスタム数が同じ場合は、出来高を足します。
これがInteratorTradeNode
を実装する私のクラスです。Comparable
テストクラスは次のとおりです。
出力は次のようになるはずです:
しかし、出力は
誰かが私を助けて、私の過ちを指摘してくれませんか?
このように compareTo() メソッドを変更しても、まだ機能しません。
結果は次のとおりです。
Ben Xuのメソッドを試してみました。コードは次のとおりです: 私の新しい compareTo() メソッド:
私の新しい Testtree クラス:
結果は次のとおりです。
最後に、それは私の要件を満たしました。しかし、この新しい compareTo() メソッドが次のテスト メソッドで機能しない理由はまだわかりません。
結果は次のとおりです。
そして、私はそれが次のようになると思いました:
新しいcompareTo()メソッドのどこに問題があるのか誰か教えてもらえますか? どうもありがとう、そして私を助けてくれた人に感謝します。
ははは、JavaRanch から回答がありました。ヘンリーという人が答えを教えてくれました。ここで、TreeSet で contains() メソッドを使用すると、この Set 内のすべてを検索するのではなく、並べ替えられた値のみを検索すると思います。
新しい Testtree3 クラスは次のとおりです。
結果は次のとおりです。
ハハ。次に、TreeSet の背後にあるコードを探しに行きます。
java - InetSocketAddress の Java コンパレータ
このクラスを a で使用できるようにComparator
、 forを記述する必要があります。アドレスとポートで比較できる必要があります。InetSocketAddress
TreeSet
コードは次のようになりますが、問題はアドレスとポートを <(-1),>(1),=(0) で比較する方法がわからないことです
編集...実際の質問。InetSocketAddress を比較する方法。
java - Android の ArrayList から重複オブジェクトを削除する
これがここで何度も議論されていることは知っていますが、私が試した例はどれもうまくいきませんでした.
私が持っているもの
Android から通話ログにアクセスし、発信されたすべての通話のリストを取得します。もちろん、ここでは多くの重複があります。まずリストを作ります
次に、オブジェクトを追加します
Contact オブジェクト クラスは単純です
必要なもの
リストに一度だけ連絡先が必要です。私がここで読んだように、Set、HashSet、TreeSet のように実行できることがいくつかあります。TreeSet は、呼び出しログから受け取った順序を保持するため、最高のようです。コードをそれで動作させようとしましたが、成功しませんでした。私の例に基づいたサンプルコードを教えてください。お時間をいただきありがとうございます。
実用的なソリューション。ご支援いただきありがとうございます、あなたは私の一日を作りました.
ContactObject では、2 つのメソッドをオーバーライドします
//ゲッターとセッターとコンストラクター....
単純に次のように使用します
java - TreeSet.floor()メソッドとTreeSet.ceiling()メソッドがAndroidにありませんか?
これは私にとって深い謎です。
これを見てください:
通常のJavaVMでは、これはコンパイルされ、美しく実行されます。
AndroidのAPIドキュメントを見ると、次のようになっています: http ://www.java2s.com/Open-Source/Android/android-core/platform-libcore/java/util/TreeSet.java.htm
メソッドの天井と床がそこにあるはずです。
しかし、Eclipse + Android SDK(ビルドターゲットは「8」)でそれらを使用しようとすると、Eclipseは、フロア(Long)とceiling(Long)がクラスTreeSetに対して定義されていないことを通知します。
何か案が?
ありがとう、Karlheinz
java - HashMap 値を TreeSet に追加する際のエラー
ここにいくつかのサンプルコードがあります...私はいつもClassCastExceptionを取得しているようです...誰かが私が間違っていることを指摘していますか?
java - その場でTreeSetのレコードを検索する
私は、swingライブラリとawtライブラリを使用してJavaでコンタクトブックアプリケーションを作成しています。アプリケーションは、TreeSetをabstractListModelとして使用するJListで構成されています。
TreeSetは、Contactと呼ばれるクラス用であり、名前に基づいて連絡先をソートするプライベートコンパレータクラスがあります。private boolean equals(Object o)
ContactがOと同じmobileNumberを持っている場合(もちろんキャスト後)、メソッドはtrueを返します。
このアプリケーションに検索機能を追加したいと思います。JTextFieldを検索し、keyListenerを追加しました。各キーを押すと、検索語を含む結果の絞り込みセットがリストに表示されます。TreeSetまたは他のコレクションにこれを行う方法はありますか?iPodのミュージックアプリケーションにあるものと同じようにしたいと思います。たとえば、文字「f」を入力すると、文字Fを含むすべての曲が一覧表示されますが、「50cent」と入力した場合のみです。あなたが望む歌手の曲が現れること。
ご協力いただきありがとうございます。