JAva開発——集合まとめ

7997 ワード

1:集合(理解)
(1)javaはオブジェクト向け言語であり、複数のオブジェクトに対して操作する場合は、複数のオブジェクトを格納する必要があります.
複数の要素を格納し,配列,配列の弊害,長さ固定を学習した.これにより、配列は
変化の要求を満たす.だからjavaは私たちが使用するための集合を提供しています.
(2)集合の特徴:
A:長さが変わる
B:オブジェクトのみ保存
C:複数種類のオブジェクトを格納できます(一般的には同じオブジェクトを格納します)
(3)集合と配列の違い
A:長さの問題
アレイ固定
アセンブリ可変
B:ストレージ要素の問題
配列は、基本タイプであってもよいし、参照タイプであってもよい.
コレクションは参照タイプのみです.
C:同じタイプかどうか
配列要素のタイプが一致します.
集合要素のタイプが一致しなくてもよい.
(4)集合体の由来
コレクションは複数の要素を格納するコンテナですが、javaはデータ構造が異なるため、複数のコレクションクラスを提供します.
これらの複数の集合クラスには共通の機能があるため,絶えず抽出することによって最終的に集合体系が形成される.
構造.
 
≪データ構造|Data Structure|emdw≫:データの格納方法.
 
	Collection

|--List

|--ArrayList

|--Vector

|--LinkedList

|--Set

|--HashSet

|--TreeSet

(5)継承システムをどのように学習し、使用するか.
学習トップレベル:トップレベルが共通のコンテンツを定義しているためです.
≪最下位を使用|Use Bottom|emdw≫:最下位が具体的な実装であるためです.
 
2:Collectionの機能
(1)Collectionの機能
A:機能追加(把握)
boolean add(Object obj):要素を追加
boolean addAll(Collection c):コレクションを追加
B:削除機能(把握)
void clear():コレクション内のすべてのコンテンツを削除
boolean remove(Object obj):コレクション内の指定した要素を削除
boolean removeAll(Collection c):指定されたセットを削除
C:判断機能(把握)
boolean isEmpty():集合が空かどうかを判断する
boolean contains(Object obj):集合内に指定された要素が含まれているかどうかを判断する
boolean containsAll(Collection c):コレクションに別のコレクションのすべての内容が含まれているかどうかを判断します.
D:遍歴機能(把握)
Iterator iterator():アセンブリ内のオブジェクトを巡回する反復器
E:長さ機能(把握)
int size():コレクション内のオブジェクトの数
F:交差機能
boolean retainAll(Collection c):2つのセットに同じ要素があるかどうかを判断する
G:変換機能
Object[]toArray():集合をオブジェクト配列に変換する
(2)反復器の使用
A:使用手順
a:コレクションオブジェクトから反復オブジェクトを取得します.
b:反復器オブジェクトで判断する.
c:反復器オブジェクトで取得します.
B:反復器の原理
複数の集合のデータ構造が異なるため、格納方式が異なるため、取り出し方式も異なる.
このとき,判断と取得機能を1つのインタフェースに定義し,将来,どのインタフェースを遍歴するかを定義する.
集合するときは,その集合内部でこのインタフェースを実現すればよい.
C:反復ソース
	public interface Iterator

{

public abstract boolean hasNext();

public abstract Object next();

}

 

public interface Collection

{

public abstract Iterator iterator();

}

 

public interface List extends Collection

{

...

}

public class ArrayList implements List

{

public Iterator iterator()

{

return new Itr();

}

 

private class Itr implements Iterator

{

public boolean hasNext(){...}

public Object next(){...}

}

}

(3)集合の一般的な使用手順:
A:集合オブジェクトの作成
B:要素オブジェクトの作成
C:集合に要素を追加する
D:コレクションを巡る
a:コレクションオブジェクトから反復オブジェクトを取得します.
b:反復器オブジェクトで判断する.
c:反復器オブジェクトで取得します.
(4)Collectionは文字列とカスタムオブジェクトを格納して巡回する.
A:格納文字列
Collection c = new ArrayList();

 

c.add("hello");

c.add("world");

c.add("java");

 

Iterator it = c.iterator();

while(it.hasNext())

{

String s = (String)it.next();

System.out.println(s);

}

 

 
B:カスタムオブジェクトを保存(自己補完)
//コレクションの作成
Collection c= new ArrayList();
//オブジェクト名ageの作成
Student  s1= new Student("HHH",12);
Student  s2= new Student("HHH",13);
 
//コレクションへのオブジェクトの追加
c.add(s1);
c.add(s2);
//強化For遍歴
for(Student s:c)
{
System.out.println(s..getName()+"**"+s.getAge());
}
 
3:Listの固有機能(把握)
(1)Listの特有機能(自己補完)
A:機能の追加
void add(int index,Object obj):指定した場所に指定した要素を追加
B:削除機能
Object remove(int index):要素を削除し、削除した要素を返します.
C:機能の変更
Object set(int index,Object obj):指定した位置の要素を指定した要素に変更します.変更前の値を返します.
D:取得機能
Object get(int index):指定したインデックスのオブジェクトを取得する
int indexOf(Object obj):このリストで指定した要素が最初に表示されたインデックスを返します.含まない場合は-1を返します.
ListIterator listIterator():リスト反復器.
(2)Listの遍歴方式
A:Iterator反復器
B:ListIterator反復器(了解)
C:普通for
(3)ListIterator反復器
A:Iteratorのサブインタフェースです.
B:独自の機能があり、データを逆方向に遍歴できますが、順方向に遍歴する必要があります.普通は使いません.
(4)Listコレクションは文字列とカスタムオブジェクトを格納して遍歴する.(自分でそろえる)
A:格納文字列
 
B:カスタムオブジェクトを保存する
3:Listの3人の息子(掌握)
(1)Listの3人の息子の特徴:
List
|--ArrayList
最下位のデータ構造は配列で、クエリーが速く、削除が遅い.
スレッドは安全ではなく、効率が高い
|--Vector
最下位のデータ構造は配列で、クエリーが速く、削除が遅い.
スレッドは安全で、効率が低い
|--LinkedList
下位データ構造はチェーンテーブルで、クエリーが遅く、削除が速い.
スレッドは安全ではなく、効率が高い
(2)いったい誰を使うのか.需要に応じて見る
安全にするかどうか:
はい:Vector
No:ArrayList,LinkedList
クエリーが多い:ArrayList
マルチ削除:LinkedList
 
もしあなたが何も知らないなら、ArrayListを使います.
(3)ArrayList(文字列とカスタムオブジェクトを格納)
(4)Vector(文字列とカスタムオブジェクトを格納)
独自の特殊機能があります.
しかし、いいえ、新しい機能に取って代わられました.
(5)LinkedList(文字列とカスタムオブジェクトを格納)
独自の特殊機能があります.ヘッドとテールを簡単に操作できます.
1:Set(把握)
(1)Setの特徴:
要素は無秩序で、一意です.
注意:ここでの順序は、格納と取り出しの順序です.
 
2:HashSet(把握)
(1)HashSet:要素の反復順序は保証されません.また、この順序が恒久的に変わらないことは保証されない.
(2)どのように保証しますか.
HashSet下位データ構造はハッシュ表である.
hashCode()とequals()の2つの方法に依存します.
順序:
まずhashCode()の値が同じかどうかを判断する.
同じ:
equals()メソッドを続行し、その戻り値に基づいて:
true:要素が重複し、コレクションに追加されないことを示します.
false:要素が重複せず、コレクションに追加されることを示します.
違い:コレクションに直接追加します.
(3)hashCode()とequals()メソッドをどのように書き換えるか.(忘れたでしょう)
hashCode():
オブジェクトのすべてのメンバー変数の値を加算します.
基本タイプの場合は、値を加算します.参照タイプの場合、ハッシュ値が加算されます.
equals():
A:this==obj
B:!(obj instanceof Student)
C:すべてのメンバー変数の値を比較します.基本タイプは==で,参照タイプはequals()である.
 
できない場合は、自動的に生成されます.
(4)ケース:(把握)
HashSetは文字列を格納し、遍歴する
HashSetはカスタムオブジェクトを保存し、巡回します.
カスタムオブジェクト:
≪デマンド|Dequired|emdw≫:オブジェクトのメンバーが同じ場合、同じ要素とみなされます.
 
3:TreeSet(理解)
(1)TreeSet:構築方法の不要に応じて自然ソートまたはコンパレータソートを選択する.
実際のニーズに応じて、要素をソートできます.そして唯一を保証します.
(2)どのように保証しますか.
ソート:下位構造はツリーです.ツリーノードに従って格納と取り出しを行います.
2つの実装:
A:ナチュラルソート(要素の比較)
TreeSetの無パラメトリック構造は,オブジェクトが属するクラスにComparableインタフェースを実装することを要求する.
B:コンパレータソート(集合に比較性がある)
TreeSetのパラメトリック構造は,構築方法がComparatorインタフェースを実現したオブジェクトを受信することを要求する.
≪一意|Unique|oem_src≫:戻り値が0であるかどうかによって異なります.
注意:
もし同時に2つの案があれば、誰を主としますか?コンパレータを主とする.
コレクション内のデータ構造の問題
ArrayXxx:下位データ構造は配列です.検索が速く、削除が遅い.
LinkedXxx:下位データ構造はチェーンテーブルです.検索が遅く、削除が速い.
HashXxx:下位データ構造はハッシュテーブルです.二つと関係がある.hashCode()とequals()
TreeXxx:下位データ構造はツリーです.2つのソート方法.ComparableインタフェースとComparatorインタフェース
 

    ,    Collection  。

     ?

  :

Set

     ?

  :TreeSet

   :HashSet

 

   , HashSet。

   :

List

     ?

  :Vector

   :ArrayList LinkedList

   :ArrayList

   ;LinkedList

   , ArrayList。

1:Map(マスター)
(1)Mapはキー値対形式の集合である.その要素はすべてキーと値で構成されています.
(2)MapとCollectionの違いは?(面接問題)
A:Mapはキー値のペアからなる集合で、Mapのキーは一意で、値は繰り返すことができます.
Mapはキーの値の対からなる集合で、Mapのキーは唯一で、値は繰り返すことができます
B:Collectionは単列データからなる集合であり,その息子リストは繰り返し可能であり,Setは唯一である.
(3)HashMapとHashtableの違いは?(面接問題)
HashMap:スレッドは安全ではなく、効率が高い.nullキーと値を許可します.
Hashtable:スレッドは安全で、効率が低い.nullキーと値は許可されません.
(4)Mapの機能:(自己補完)
A:機能V put(K key,V value)を追加
keyがコレクションに存在しない場合、要素を追加します.キーがコレクションに存在する場合、置換
 
B:判定機能boolean containsKey(Object key):指定したキーが集合中か否かを判定する
boolean containsValue(Object value):指定した値がコレクションにあるかどうかを判断します.
boolean isEmpty()は、集合が空であるか否かを判断する
C:削除機能
void clear():すべてのキー値ペアデータをクリア
V remove(Object key):指定したキーに基づいてキー値ペアを削除
D:取得機能
Object get(Object key):キーに基づいて値を取得
SetkeySet():すべてのキーのセットを取得
Collectionvalues():すべての値のセットを取得
E:長さ機能
(5)Mapの2つの遍歴方式(考え方の補完)
A:夫が妻を探している
Set set=hm.keySet();
for(String s:set)
{
String str=s.get(s);
System.out.println(str);
}
 
B:結婚証明書で夫と妻を探します.
 
2:HashMap(マスター)
(1)HashMapは文字列を格納して遍歴する
キー:String
値:String
(2)HashMapはカスタムオブジェクトを格納して巡回する
キー:String
値:Studio
(3)HashMapはカスタムオブジェクトを格納し遍歴する
キー:Studio
値:String
需要:オブジェクトのメンバー変数の値が同じ場合は、同じオブジェクトとみなされます.
 
3:TreeMap(理解)
(1)TreeMapは文字列を格納して遍歴する
キー:String
値:String
(2)TreeMapはカスタムオブジェクトを格納して巡回する
キー:String
値:Studio
(3)TreeMapはカスタムオブジェクトを格納して巡回する
キー:Studio
値:String
需要:オブジェクトのメンバー変数の値が同じ場合は、同じオブジェクトとみなされます.
また、年齢順に並べ替えなければなりません.