자바 - 컬렉션 개요 (수집 /지도)

컬렉션 소개

  수집하기 전에, 우리는 스토리지 어레이를 사용하여, 어레이 객체를 저장 (객체 참조 변수) 될 수있는 기본 데이터 타입의 값 모두를 저장할 수 있지만, 객체의 집합을 저장할 수있다.
  자바 컨테이너 세트와 유사한, 동일 유형의 객체 (실 대상물 참조) 세트를 형성하기 위해 함께 저장된다. 이전 글, 우리는 5 개 제네릭을 추가 한 후, 자바를 도입해야 자바 컬렉션은 특정 개체 유형을 지정할 수 있습니다.
  기본 인터페이스는 자바 컬렉션 클래스이며,지도 컬렉션 인터페이스를 인터페이스. : 인터페이스는 두 가지 기본적인 방법이있다 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(): 세트에 걸린 모든 요소, 길이가 0 인 집합.
  • boolean remove(Object o): 콜렉션 요소는 하나 이상의 O를 포함하는 첫 번째 매칭 소자를 제거 할 때, 수집 O에서 지정된 요소를 제거하고 true를 반환.
  • boolean removeAll(Collection<?> c);: 설정을 차이점과 동일 c는이 세트에서 세트의 모든 요소를 ​​제거하고 삭제 이상의 요소 경우는 true를 돌려줍니다.
  • boolean contains(Object o): 본 경우, 세트 내의 지정된 요소가 있는지 여부가 판정 O true를 반환하고, 반대로,이 거짓을 반환.
  • boolean containsAll(Collection<?> c): 모든 요소가 포함 된 경우, true를 돌려 C 세트의 세트에 포함 여부를 판단하는 단계; 반대로 false를 반환합니다.
  • boolean isEmpty():이 비어있는 경우 설정이 비어할지 여부를 결정합니다, 그것은 true를 반환하고, 반대로 false를 반환합니다. 0 길이 설정, 즉 비어 있습니다.
  • Iterator iterator(): 반복자 객체를 반환, 요소의 컬렉션을 통과.
  • int size(): 세트의 요소의 수를 돌려줍니다;
  • Object[] toArray()다음 세트 어레이 요소들의 대응하는 세트는 모든 요소의 배열로 변환하게된다.

컬렉션을 람다 표현식

   람다 식에 도입 자바 8 반복자 인터페이스는 : 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
求交集: []

참고 도서
"광기 자바"
"자바 핵심 기술 볼륨"

추천

출처www.cnblogs.com/Andya/p/12548619.html