コレクションについて
コレクションの前に、我々は、ストレージアレイを使用して、アレイは、基本データ型の値の両方を記憶することができるオブジェクト(オブジェクト参照変数)を保存することができるが、唯一のオブジェクトのコレクションを格納することができます。
ジャワの容器同様のセット、同じタイプのオブジェクト(実オブジェクト参照)がセットを形成するために、一緒に格納されます。前の記事では、我々は5つの追加ジェネリック後、ジャワを導入する必要があり、Javaコレクションは、特定のオブジェクトの種類を指定することができます。
基本的なインタフェースは、Javaコレクションクラスで、地図コレクションインタフェースをインタフェースします。:インターフェイスは、2つの基本的な方法があるadd()
とiterator()
メソッドを。
public interface Collection<E> {
boolean add(E element);
Iterator<E> iterator();
...
}
前記add()
方法は、コレクションに要素を追加するために使用され、コレクションの変更、追加要素は、trueを返した場合、逆に、falseを返します。、要素のセットは、すでに追加されるときに存在する場合は、再度、追加、falseを返します。iterator()
方法は、次にアクセスの要素のコレクションをイテレータオブジェクトを使用して、イテレータインターフェースを実装するオブジェクトを返します。
コレクションシステム
コレクション継承ツリー収集システム
順不同のコレクションに代わって収集システム、セット;代表リストのセットを注文しました。キューキューのセットを表します。
地図収集システムの継承ツリー
地図システム、格納されたデータは、マッピング関係(キー値)、キーマップは繰り返されていないを有しています。
分類
- セット:ランダム、非反復セット。
- リスト:秩序、重複したコレクション。
- キュー:キューのセット。
- マップ:マッピングのセットがあります。
コレクションの一般的な方法
boolean add(E e)
:コレクションが変更された場合はtrueを返し、要素のコレクションに追加された、逆に、falseを返します。boolean addAll(Collection<? extends E> c)
:変更セット場合は、trueを返し、Cの指定されたセットにセット内のすべての要素を追加し、逆に、falseを返します。void clear()
クリアセット内のすべての要素、長さゼロのセット。boolean remove(Object o)
:コレクション要素が1つ以上のOを含む場合、回収Oで指定された要素を削除し、最初に一致した要素を削除し、trueを返します。boolean removeAll(Collection<?> c);
:セットの差分等しくcがこのセットから、セット内のすべての要素を削除し、削除またはそれ以上の要素ならば、それはtrueを返します。boolean contains(Object o)
:存在する場合、セット内の指定された要素があるか否かが決定O、trueを返し、逆に、戻り偽。boolean containsAll(Collection<?> c)
:すべての要素が、含まれている場合、trueを返すCの組のセット内に含まれるかどうかを判定するステップと、逆に、偽を返します。boolean isEmpty()
:それが空の場合、セットが空であるか否かを判断する、それはtrueを返し、逆に、falseを返します。0の長さのセットは、それが空です。Iterator iterator()
:イテレータは、要素のコレクションを横断し、オブジェクトを返します。int size()
:セット内の要素の数を返します。Object[] toArray()
:セットは、すべての要素の配列に変換された配列要素の対応するセットとなります。
コレクションをラムダ式
ラムダ式に導入されたJavaの8 Iteratorインターフェイス:forEach(Consumer<? super T> action)
メソッドは、要素のコレクションを横断すると呼ばれる要素がコレクションに渡されるConsumer接口
のaccept(T t)
方法と消費者がある函数式接口
ので、これはです函数式编程
。
ソースとして、次のとおりです。
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
前記retuireNonNull(T obj)
次のようにオブジェクト、ソースコードの方法があります。
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
実用例
public class DemoApplication {
public static void main(String[] args) {
Collection collection = new ArrayList();
// 添加元素
collection.add("add()方法");
collection.add(1);
collection.add(2.7);
collection.add("value1");
collection.add("value2");
System.out.println("collection 集合元素为:" + collection);
//lambda表达式遍历
collection.forEach(c -> System.out.println("forEach: " + c.toString()));
// 删除指定元素
System.out.println("删除指定元素1:" + collection.remove(1));
System.out.println("删除指定元素2:" + collection.remove(2));
//判断是否包含指定元素
System.out.println("是否包含2.7:" + collection.contains(2.7));
System.out.println("是否包含2:" + collection.contains(2));
//判断是否包含某个集合
Collection valueSet = new HashSet();
valueSet.add("value1");
valueSet.add("value2");
System.out.println("是否包含集合: " + collection.containsAll(valueSet));
//求差集:去除另一个集合的所有元素
collection.removeAll(valueSet);
System.out.println("求差集后:" + collection);
//清空集合元素
collection.clear();
System.out.println("清空集合后: " + collection);
//集合长度
System.out.println("集合长度: " + collection.size());
//求交集:只保留另一个集合的元素
valueSet.retainAll(collection);
System.out.println("求交集: " + valueSet);
}
}
結果:
collection 集合元素为:[add()方法, 1, 2.7, value1, value2]
forEach: add()方法
forEach: 1
forEach: 2.7
forEach: value1
forEach: value2
删除指定元素1:true
删除指定元素2:false
是否包含2.7:true
是否包含2:false
是否包含集合: true
求差集后:[add()方法, 2.7]
清空集合后: []
集合长度: 0
求交集: []
参考図書
「狂気のJava」
「Javaのコア技術ボリューム」