Javaコレクションソース分析のSet概要

1527 ワード

この文章はシリーズの終わりであり、最も読みやすい文章になるだろう.ここには一つの概念しかないので、それはSetが何なのか、残りはいくつかの感触と総括です.
Set概要
Setの構造や実装はMapと高度に一致しているため,ここでは分析を行わず,興味のある友人は自分でソースコードを調べることができる.しかし、Setとは何かを知る必要があります.Setは重さのない要素を含む集合です.つまり、すべての要素が唯一です.やはりドキュメントの説明を見てみましょう.
A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical setabstraction.
さらにSetシリーズにもSortedSet,NavigableSetというソートベースのインタフェースがあり,それらの役割はMapの解析において詳細に説明されている.
まとめ
こんなに多くの集合類のソースコードを分析した後、最大の感触は「ああ、なるほど~」ではなく、著者の高度な抽象的な思考、厳格なコード、極めて規範的な符号化スタイルに驚嘆した.コード自体の価値はこのような思想がもたらした利益にはるかに及ばず、私たちが身につけなければならないのはこれらの原理であり、退屈なコードの実現を覚えているわけではない.
しかし、驚くべき背後には、著者が払った苦労も巨大で、その中にも辛酸としようがないことが含まれている.そんなに多くのデータ構造を作り出すのは、データを処理する能力を高めるためではないでしょうか.しかし、現実は一方で極致を追求するには、他の面で妥協しなければならない.私たちを永遠に楽にさせる構造はない.だから需要は尽きず、探求は尽きない.LinkedListでのクエリー方法を覚えていますか?このような小さな点で、検索速度を半分に向上させようと努力したが、当時は本当にこのような操作に驚き、エンジニアの繊細さのためだった一方で、「ああ、本当にこれ以上はできない~」と感嘆したからかもしれない.
Javaの集合クラスでは、オブジェクトに依存するequalshashCodecloneのメソッドが多く、Comparableインタフェースを実装する必要があるものもあります.データ構造を理解し,集合クラスがどのようなデータ構造を用いているかを明らかにすれば,どのような方法を実現する必要があるか推測できると思う.これらの詳細を把握できれば、より優れたコードを書くことができます.これらの思想を身につけることができれば、言語の束縛を超え、ソフトウェア設計の真髄を理解することができます.
このシリーズの文章を読むと、あなたに少しの向上をもたらすことができて、私にとって大きな喜びと励ましです.
今、冒頭で述べたいくつかの質問に答える自信はありますか?
転載:https://www.jianshu.com/p/d68eea1a3a8c