Pythonでは、標準の「リスト」、「タプル」、「セット」、「辞書」を知っていれば、かなり遠くまで行くことができます。これらは、まともなPythonプログラマーが知っておくべき基本的なデータ構造です。
これらのデータ構造に相当するJavaは何ですか?また、注目に値する他のデータ構造はありますか?
Pythonでは、標準の「リスト」、「タプル」、「セット」、「辞書」を知っていれば、かなり遠くまで行くことができます。これらは、まともなPythonプログラマーが知っておくべき基本的なデータ構造です。
これらのデータ構造に相当するJavaは何ですか?また、注目に値する他のデータ構造はありますか?
悲しいことに、Javaにはネイティブのタプルがありません。ほとんどの場合、次のように使用します。
一般的なJavaコレクションをご覧ください:http ://docs.oracle.com/javase/tutorial/collections/index.html 並行性について:http://docs.oracle.com/javase/tutorial/essential/concurrency/collections .html
多くの外部ライブラリがあります(Guava、Apache、...)
LinkedList、HashMap、HashSetを使用して多くのことを実行でき、辞書http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.htmlもあります。
新しい言語を学ぶ最良の方法は、コードを読むことです。GitHubは、大量のオープンソースJavaアプリケーションをホストしています。最新情報はこちらで確認できます:https ://github.com/languages/Java
これは役に立ちますか?
Java には、set、list、HashMapを含むすべてのデータ構造がJava Collections Frameworkで定義されています。HashMap は本質的に辞書と同等です。
タプルに相当するものについては、 unmodifiableList を調べてください。
Java では、彼は万能のツールであるclassを持っています。Python ではタプルまたはディクショナリを使用して解決するほとんどの問題について、Java では、インスタンス変数、コンストラクター、getter、および setter を使用してカスタム クラスを記述します。したがって、Java を使用するときは、ボイラープレートを作成する準備をしてください。
データ構造に関する限り、デフォルトのものはArrayList
、HashSet
、およびHashMap
です。ソートされたバージョンがあります:TreeSet
およびTreeMap
—必要な場合、非常に便利です。
金属に近いパフォーマンスが必要な場合は、アレイに頼ります。
Java では、組み込みの同時実行性も利用できますが、複雑になりますConcurrentHashSet/Map
。プレーン コレクションのラッパーのようなパフォーマンス オプションや、同期されたラッパーもありますCollections/synchronizedSet/Map/List
(これらは、ラッピング オブジェクトを返すメソッドです)。