ダークホースプログラマー--集合フレームワーク(1)

5868 ワード

---Javaトレーニング、Androidトレーニング、iOSトレーニング、.Netトレーニング、ご交流をお待ちしております!------

集合フレーム(1)


コレクション:1、オブジェクトを格納するコンテナ.2.容器の長さは可変である.集合と配列の違いは?1,集合長は可変である.配列長は固定されています.2,コレクションにはオブジェクトしか格納できません.配列には、オブジェクトを格納したり、基本タイプの数値を格納したりできます.3,コレクションに格納されているオブジェクトは任意のタイプであってもよい.配列には同じタイプのオブジェクトしか格納できません.
集合フレームワークの由来:コンテナは多く、各コンテナのデータ構造が異なるためです.データ構造とは、データをコンテナに格納する方式のコンテナであり、構造が異なるが、共通性を備えており、絶えず上へ抽出することができる.コレクションフレームワークが形成され、そのフレームワークの最上位の1つがCollectionインタフェースである.このインタフェースでは、集合フレームワークで最も共通の機能が定義されます.最終的に使用する場合、そのフレームワークの最サブクラスのオブジェクトが実際に使用されます.
Collection List:リスト.特徴:1、秩序(要素を格納する順序と要素を取り出す順序が一致する)2、このセットの要素にはインデックスがあるので、インデックス(コーナースケール)で要素にアクセスできます.3.重複要素を格納できます.一般的なサブクラスオブジェクト:具体的なサブクラスオブジェクトは、そのオブジェクト特有のデータ構造と関連する特徴を学ぶ必要があります.
         1,Vector:jdk1.0は存在します.最下位は配列構造です.可変長配列、原理:元の配列の長さが足りないと、新しい配列が作成され、元の配列の要素を新しい配列にコピーし、新しい要素を新しい配列に追加します.Vectorは同期しています.2,ArrayList:下位層は配列構造であり,長さ可変配列もサポートする.非同期です.代わりにVectorクエリの効率は高いが、削除の効率は低い.3,LinkedList:下位層はリンクリスト構造であり,チェーンテーブル構造と略称する.非同期です.この中構造のメリット:要素の削除が非常に効率的です.クエリの効率が低い.Set:セット:フィーチャー:1、重複要素は含まれません.(最大の特徴)2,この集合が要素に格納される順序と取り出し要素の順序が必ずしも一致しない
一般的なサブクラス:
1,HashSet:下位データ構造はハッシュテーブルであり,順序を保証せず,同期しない.特徴:1、関係要素の順序.2、クエリの効率化.3、ハッシュ値が異なるため、重複要素は発生しません.同じであっても,2つの要素のequals,内容が同じかどうかは再び判断される.コンテンツも同じであれば、保存せず、コンテンツが異なる場合は保存します.したがって,ハッシュテーブルは要素の一意性を保証するために,2つの方法に依存しなければならない.1,hashCode 2,equals 2,TreeSet:Setセット内の要素を指定した順序で並べ替えることができます.非同期.TreeSetソートの方式1:要素自身に比較性を持たせるには,comparableインタフェースを実現し,compareToメソッドを上書きする必要がある.この比較方式は自然順序ソートとなる.この場合は2つ目の方法しか使えません.TreeSetのソート方法2:コンテナ自体に比較性を持たせる.容器は初期化すると比較機能を備えている.コンテナはオブジェクトの構造時に完成するからです.調べてみると、一つの構造方法がある.コンテナの初期化時にコンパレータを指定できます.comparatorインタフェースを実装し、comparareメソッドを上書きする必要があります.したがって、この方式は比較器ソートとなる.
-------------------------------------------------------------------
collectionでよく使われる方法を見てみましょう.
Collectionでよく使われるメソッド1で、メソッドを追加します.boolean add(object):要素を一度に追加します.boolean addAll(Collection):パラメータコンテナの要素を現在のコンテナに追加します.2、削除方法.boolean remove(object):指定したオブジェクトを削除します.boolean removeAll(Collection):指定したcollectionと本Collectionの同じ要素を削除します.void clear():コレクション内の要素を直接空にします.3,判断方法:boolean contains(object):指定要素が含まれているかどうか.boolean containsAll(Collection):指定したコンテナ内の要素が含まれているかどうか.boolean isEmpty():要素があるかどうか.4,取得要素個数:int size():取得要素がいくつかあります.5、交差を取ります.boolean retainAll(collection):collectionコレクション内の同じ要素を保持および指定すると、異なる要素が削除されます.6,集合を配列に変換する.Object[]toArray():7、要素を取り出す方法:Iterator iterator():
反復器:コレクション内の要素を取り出す方法のオブジェクト.オブジェクト自体がコンテナに組み込まれています.コレクションの反復器を取得するにはどうすればいいですか?iterator()メソッドで完了できます.このメソッドは、Iteratorタイプオブジェクトを返します.反復器インタフェースが表示されます.各コンテナの取り出し方法をカプセル化します.そして対外的に暴露する.これにより,どんなコンテナやデータ構造でも,内部取り出し方式でIteratorインタフェースが実現されれば,そのインタフェースを介してこれらのコンテナの要素を取り出すことができる.その出現は,容器の取り出し方式と容器のデータ構造を分離し,結合性を低下させた.一方,取り出し方式は,コンテナ内の要素に直接アクセスし,具体的なデータ構造に依存するため,コンテナに定義されている.内部クラスでIteratorインタフェースを実装します.Collectionコレクション内のコンテナであれば、反復器は汎用的な取り出し方式です.
反復のデモ:
public class IteratorDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		 
		 * 
		 */
		
		// 。 
		Collection coll = new ArrayList();
		// 。
		coll.add("abc1");
		coll.add("abc2");
		coll.add("abc3");
		
		
		/*
		// 。
		Iterator it = coll.iterator();
		
		// 。 
		while(it.hasNext()){
			System.out.println(it.next());
		}
		*/
		
		// while for 。 for。
		for(Iterator it = coll.iterator(); it.hasNext(); ){
			System.out.println(it.next());
		}
		
//		System.out.println(it.next());
//		System.out.println(it.next());
//		System.out.println(it.next());//next() 。 。
	}

}

Listサブインタフェースに特有の方法を示します.このインタフェースの特徴は、要素にインデックス表示があることです.インデックスを中心に定義されているはずです1,追加:void add(index,element);     boolean addAll(index,collection); 2,削除:object remove(index):取得して削除します.メソッドの増加や削除の成功は、集合の長さを変えることを覚えておいてください.3,取得:取得要素:Object get(index):取得要素インデックス:int indexOf(object);     int lastIndexOf(object); サブリストの取得:リストsubList(fromIndex,toIndex):リストの一部を取得し、fromIndex位置を含み、toIndex位置を含まない.4、修正します.object set(index,element):指定した位置の要素を置き換え、置き換えられた要素を返します.リストインタフェースは,要素を削除して調べる操作が可能であることが分かった.注意:この集合だけが削除・変更を備えています.備わっている理由:インデックスがあるからです.
package cn.itcast.api.p1.list.demo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ListDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		
		
		
		listMethodDemo(list);
		getAllElements(list);
		
	}
	
	

	
	/*
	 *  : list 。 
	 * 
	 */
	public static void getAllElements(List list){
		list.add("abc1");
		list.add("abc7");
		list.add("abc2");
		list.add("abc4");
		
		
		
		// 。
//		Iterator it = list.iterator();		
//		while(it.hasNext()){
//			System.out.println(it.next());
//		}
		
		// 。 。
		for(int x=0; x

treesetデモ
package cn.itcast.api.p3.set.demo;

import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		TreeSet ts = new TreeSet();
		
		ts.add("haha");
		ts.add("xixi");
		ts.add("heihei");
		ts.add("hehe");
		ts.add("hohoh");
		ts.add("hiahia");
		
		Iterator it = ts.iterator();
		
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
	}

}

 
HashSet
package cn.itcast.api.p3.set.demo;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		// 。
		HashSet hs = new HashSet();
		
		hs.add("nba");
		hs.add("hahaha");
		hs.add("xixi");
		hs.add("abcd");
		
		Iterator it = hs.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}

}