(3.2)のJavaの学習と応用 - データ構造

トポロジコレクション

 

 

記載の一般的な方法の組

コレクションとは異なり、配列、可変長ストレージオブジェクト。
コレクションインタフェース、など一般的に使用される機能:追加の追加、クリアクリア、削除を除去し、含ま含むinEmptyが空である、サイズの数、のtoArray配列に格納された
イテレータイテレータインターフェースのセットにない要素まで、セット内の要素を削除します。使用されているようのhasNextが次の要素であり、次の次の要素法を取り出します。
使用トラバース次いで、(ジェネリックを含む)イテレータイテレータを取得する収集方法を使用して、コレクションにわたって反復します。-1から後退開始位置ポインタトラバーサルイテレータエッセンス。
トラバースへの拡張forループの場合、フォーマットはイテレータの記述を単純化できます。(変数、変数名:セット/アレイ名)のための{}アクセス変数名

 

ジェネリック

ジェネリック、未知のデータタイプ、E.作成されたオブジェクトのタイプを決定する未知のE型を表すデータ、Eは、デフォルトでオブジェクトタイプ。
ジェネリックは、コレクションの同じ型に格納されたデータを格納および取得することができます。コンパイル時にコードの仕様を確認してください。
作成には含まれていジェネリッククラス広く使われている汎用的なデータ型のクラスを可能にします。フォーマットパブリッククラス名<E> {プライベート EのXXX 、等}、Eは、戻り値とデータ定義を使用して実装表します。
含む一般的な方法例えばMとしては、変化は、内部データ、およびリターンへ送信される表します。そのような公共[静的] <M>ボイドとしてフォーマット method01(M [ Mジェネリックを使用して]){XXX}
含む汎用インタフェースを、そのようなパブリックインターフェイスXXXの<E> {XXXXとしてフォーマット }。そして、一般的なデータ型を定義する実装クラスを作成します。ジェネリック医薬品も継承され、その後に書き換えることができる前に。
ジェネリックワイルドカード、任意を表すデータを受信し、オブジェクトのオブジェクトは、パラメータ送信(使用される場合、定義されていない)を使用した場合にのみ、その本質は?
一般的な定義された限界:一般的には、EのみタイプEの代わりに用いることができる延在しサブクラスは/自体は、一般的な制限が定義されて:?一般的なスーパーのEは、親クラスEのタイプに代わって使用することができます/自体、定義<>の範囲で使用され
、コレクションの収集ツールは、シャッフルの方法は、コレクションを妨害することがありためです。拡張forループ迅速なアイデアを生成するために使用することができます

 

基本的なデータ構造

自分の好みのアドレス(頻繁にオープンスペース)を変更することができ、他の操作のJava配列を削除します。
ソートツリーは、バイナリツリーに基づいて、右の子のサブツリー大型、小型の木を残しました。バランスのとれたツリー、子供の数が同じでは左右の子供たち。アンバランスツリー、左右の違い。
赤黒木、バランスツリー近いは、速度が非常に速いクエリで、クエリのリーフノードの最大数及び最小数は2倍以上にすることはできません。クエリの速度。

 

 

一覧インタフェース

 Listインタフェースは、セットを注文し、ストレージ繰り返し要素をできるように、インデックス付き。、指定された場所に追加リターンを要素の指定された位置を取得し、要素を削除するために要素を追加する一般的に使用される方法は、要素の指定されたセット位置を設定し、指定した場所を削除します。あなたは、イテレータを使用して取得し、横断する他の方法のためにすることができます。
ArrayListの配列は、プロセスが追加と削除を遅らせるためにつながるスペースと割り当てを、開放する追加と削除を繰り返して、マルチスレッド技術を使用しています。
LinkedListのリスト方法、同じマルチスレッド技術、追加、addFirst、addLast、プッシュ追加要素、getFirstと、GetLastの取得要素、明確な空要素、removeFirstと、removeLastは、要素を削除ポップなど、そして最後の要素
シングルスレッド技術のベクトルコレクション同期。同一の可変長配列。

 

セット・インタフェース

Set接口,不包含重复元素,没有索引,不能使用for遍历。
HashSet集合,哈希表结构(查询快),无序,不同步,使用迭代器或增强for遍历。hashCode方法,获取操作系统随机给出的十进制整数(哈希值(模拟地址值))。
String类重写了hashCode方法。不同字符串可能有相同的哈希值。
java1.8以后,哈希表使用数组,链表和红黑树提高查询速度。
数组结构:把元素进行了分组(相同哈希值的元素是一组,链表/红黑树结构把相同哈希值的元素连接到一起。每组数量大于8则将链表变成红黑树。数组长度定为16。
因在哈希冲突后,会比较组内的元素是否存在,确定是否存储,以保障Set集合中元素不重复。存储的引用类型数据必定重写了hashCode和equals方法(保障数据不重复)。
自定义的数据类型可以通过idea自动生成hashCode和equals方法。
LinkedHashSet集合,哈希表+链表与红黑树结构,另外多了一条链表用于保障元素有序。遍历有序。
可变参数,类型确定,个数不定,格式如int ...arr,其实质为创建数组。使用增强for遍历。可变参数只有一个,且位于所有变量末尾。另外如:Object ...args。

 

Collections工具类

Collections的工具类,包含静态方法如:add添加元素,shuffle打乱元素,addAll添加多个元素,sort按默认规则排序(自定义类需要实现接口Comparable,重写方法compareTo)
sort排序(使用Comparator匿名类重写compare方法作为参数进行排序)其中自定义的排序方法可以组合进行多个关键字排序

 

Map接口

Map接口,包含K和V两个泛型(键、值)(双列集合,一一对应,键值不能重复)。HashMap集合,实现了Map接口,集合底层为哈希表,查询快。LinkedHashMap底层是哈希表和链表(保障数据顺序)。
Map的方法,put放入(返回被替换的键),get获取,remove删除(返回删除值),containsValue,containsKey是否包含。
keySet方法,返回的key会放到Set集合中,使用迭代器或增强for进行遍历key,键找值,进行遍历。
Map接口的实现集合被创建后,为每个键值对其内部的创建了Entry对象(Map.Entry),多个Entry用于记录键值对映射关系的集合(使用entrySet取出)。使用Entry中的getKey方法获取key,使用getValue创建vaule。
HashMap类存储自定义类型,key需要重写hashCode和equals方法,保障key的唯一性。
LinkedHashMap类,有序集合存储。HashTable键和值都不为空,同步单线程,双列集合(区别于HashMap的允许空值等)。
哈希表的优点和利用在于其快速查找,配合Map可以快速统计。
of方法,一次性添加多个元素,适用于List,Set,Map接口,返回的集合不能改变(JDK9)。

 

おすすめ

転載: www.cnblogs.com/bai2018/p/12274454.html