> Java > java지도 시간 > 본문

컬렉션 도구 클래스는 네 가지 정적 메서드 작업을 제공합니다.

Y2J
풀어 주다: 2017-05-09 11:31:43
원래의
3098명이 탐색했습니다.

컬렉션 도구 클래스는 컬렉션/지도에 대한 다양한 작업을 제공합니다. 이번 글에서는 주로 Power Node Java Academy에서 작성한 Collections 도구 클래스를 소개합니다. 필요한 친구들이 참고하면 됩니다

Collections 도구 클래스는 4가지 범주로 나눌 수 있는 컬렉션/지도에 대한 많은 작업을 제공합니다. , 모두 정적(정적) 방식입니다:

1. 정렬 작업(주로 List 인터페이스와 관련됨)

  • ℓ reverse( 목록 목록): 지정된 목록 컬렉션의 요소 순서를 뒤집습니다.

  • z shuffle(목록 목록): 목록의 요소를 무작위로 정렬(셔플)합니다. 🎜>

  • lg sort(List list): List의 요소를 자연적인 오름차순으로 정렬합니다.

  • l sort(List list, Comparator c) : 사용자 정의 비교기로 정렬

  • z swap(List list, int i, int j): 지정된 List 컬렉션에서 i에 있는 요소와 j에 있는 요소를 교환합니다.

  • ℓrotate(List list, int distance): 모든 요소를 ​​지정된 길이만큼 오른쪽으로 이동합니다. 거리가 크기와 같으면 결과는 변경되지 않습니다.

  • public void testSort() {
        System.out.println("原始顺序:" + list);
        Collections.reverse(list);
        System.out.println("reverse后顺序:" + list);
        Collections.shuffle(list);
        System.out.println("shuffle后顺序:" + list);
        Collections.swap(list, 1, 3);
        System.out.println("swap后顺序:" + list);
        Collections.sort(list);
        System.out.println("sort后顺序:" + list);
        Collections.rotate(list, 1);
        System.out.println("rotate后顺序:" + list);
      }
    로그인 후 복사
출력


원래 순서: [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu]

역순: [c Zhao Wu, e Qian Qi, a Li Si, d Sun Liu, b Zhang San]
셔플 후 순서: [b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi, a Li Si]
셔플 이후 순서 교환: [b Zhang San, e Qian Qi, d Sun Six, c Zhao Wu, a Li Si]
정렬 후 순서: [a Li Si, b Zhang San, c Zhao Wu, d Sun Liu, e Qian Qi]
회전 후 순서: [e Qian Qi, a Li Si, b Zhang San, c Zhao Wu, d Sun Liu]

검색 및 바꾸기(주로 컬렉션 관련) 인터페이스)

  • zbinarySearch(List list, Object key): 이진 검색 방법을 사용하여 목록에서 지정된 개체의 인덱스를 얻습니다. 정렬되었습니다

  • z max( Collection coll): 최대 요소를 반환합니다.

  • z max(Collection coll, Comparator comp): 최대 요소를 반환합니다. 사용자 정의 비교기에 따른 최대 요소

  • min(Collection coll): 가장 작은 요소를 반환

  • l min(Collection coll, Comparator comp ): 사용자 정의 비교자에 따라 가장 작은 요소

  • 를 반환합니다.
  • ℓ fill(List list, Object obj): 지정된 개체를 사용하여

  • <🎜을 채웁니다. > z 빈도(컬렉션 객체 o): 지정된 컬렉션에서 지정된 객체의 발생 횟수를 반환합니다.
  • z replacementAll(List list, Object old, Object new): <🎜 바꾸기 >
  •   public void testSearch() {
        System.out.println("给定的list:" + list);
        System.out.println("max:" + Collections.max(list));
        System.out.println("min:" + Collections.min(list));
        System.out.println("frequency:" + Collections.frequency(list, "a李四"));
        Collections.replaceAll(list, "a李四", "aa李四");
        System.out.println("replaceAll之后:" + list);
        
        // 如果binarySearch的对象没有排序的话,搜索结果是不确定的
        System.out.println("binarySearch在sort之前:" + Collections.binarySearch(list, "c赵五"));
        Collections.sort(list);
        // sort之后,结果出来了
        System.out.println("binarySearch在sort之后:" + Collections.binarySearch(list, "c赵五"));
    
        Collections.fill(list, "A");
        System.out.println("fill:" + list);
      }
    로그인 후 복사

    출력

주어진 목록: [b Zhang San, d Sun Liu, a Li Si, e Qian Qi, c Zhao Wu]
최대: e Qian Qi

min: a Li Si

빈도: 1
replaceAll 후: [ b Zhang San, d Sun Liu, aa Li Si, e Qian Qi, c Zhao Wu]
정렬 전 바이너리 검색 : -4
정렬 후 바이너리 검색: 2
채우기: [A, A, A , A, A]



3.동기화 제어

컬렉션 도구 클래스는 여러 개의 syn
chr

onizedXxx 메서드를 제공합니다. 이 메서드는 지정된 컬렉션 개체에 해당하는 동기화 개체를 반환하여 여러 스레드 액세스 시 스레드

보안 문제를 해결합니다. 동시에 수집합니다. HashSet, ArrayList 및 HashMap은 모두 스레드에 안전하지 않습니다. 동기화를 고려해야 하는 경우 다음 방법을 사용하세요. 이러한 메소드에는 주로 동기화된Set, 동기화된SortedSet, 동기화dList, 동기화된맵, 동기화된SortedMap이 포함됩니다. 특히, 컬렉션을 순회하기 위해 반복 방법을 사용할 경우 반환된 컬렉션을 수동으로 동기화해야 합니다.

 Map m = Collections.synchronizedMap(new HashMap());
   ...
 Set s = m.keySet(); // Needn&#39;t be in synchronized block
   ...
 synchronized (m) { // Synchronizing on m, not s!
   Iterator i = s.iterator(); // Must be in synchronized block
   while (i.hasNext())
     foo(i.next());
 }
로그인 후 복사

4. 불변 컬렉션 설정

컬렉션에는 불변 컬렉션을 반환할 수 있는 세 가지 유형의 메서드가 있습니다.

1. 불변의 빈 컬렉션 객체

2. SingletonXxx(): 지정된 객체만 포함하는 불변의 컬렉션 객체를 반환합니다.

3. unmodifyingXxx(): 지정된 컬렉션 개체의 변경 불가능한

  public void testUnmodifiable() {
    System.out.println("给定的list:" + list);
    List<String> unmodList = Collections.unmodifiableList(list);
    unmodList.add("再加个试试!"); // 抛出:java.lang.UnsupportedOperationException
    // 这一行不会执行了
    System.out.println("新的unmodList:" + unmodList);
  }
로그인 후 복사
를 반환합니다. 5.

기타

1. disjoint(Collection c1, Collection c2) - 지정된 두 컬렉션에 동일한 요소가 없으면 true를 반환합니다.

2. addAll(Collection c, T... a) - 지정된 컬렉션에 지정된 모든 요소를 ​​추가하는 편리한 방법입니다. 데모:
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");

3. Comparator reverseOrder(Comparator cmp) - 返回一个比较器,它强行反转指定比较器的顺序。如果指定比较器为 null,则此方法等同于 reverseOrder()(换句话说,它返回一个比较器,该比较器将强行反转实现 Comparable 接口那些对象 collection 上的自然顺序)。

public void testOther() {
    List<String> list1 = new ArrayList<String>();
    List<String> list2 = new ArrayList<String>();
    // addAll增加变长参数
    Collections.addAll(list1, "大家好", "你好","我也好");
    Collections.addAll(list2, "大家好", "a李四","我也好");
    // disjoint检查两个Collection是否的交集
    boolean b1 = Collections.disjoint(list, list1);
    boolean b2 = Collections.disjoint(list, list2);
    System.out.println(b1 + "\t" + b2);
    // 利用reverseOrder倒序
    Collections.sort(list1, Collections.reverseOrder());
    System.out.println(list1);
  }
로그인 후 복사

输出

true false

[我也好, 大家好, 你好]

6. 完整代码

package com.bjpowernode.test;
import java.util.*;
import org.junit.Before;
import org.junit.Test;
public class CollectionsTest {
  private List list = new ArrayList();
  @Before
  public void init() {
    // 准备测试数据
    list.add("b张三");
    list.add("d孙六");
    list.add("a李四");
    list.add("e钱七");
    list.add("c赵五");
  }
  @Test
  public void testUnmodifiable() {
    System.out.println("给定的list:" + list);
    List<String> unmodList = Collections.unmodifiableList(list);
    unmodList.add("再加个试试!"); // 抛出:java.lang.UnsupportedOperationException
    // 这一行不会执行了
    System.out.println("新的unmodList:" + unmodList);
  }
  @Test
  public void testSort() {
    System.out.println("原始顺序:" + list);
    Collections.reverse(list);
    System.out.println("reverse后顺序:" + list);
    Collections.shuffle(list);
    System.out.println("shuffle后顺序:" + list);
    Collections.swap(list, 1, 3);
    System.out.println("swap后顺序:" + list);
    Collections.sort(list);
    System.out.println("sort后顺序:" + list);
    Collections.rotate(list, 1);
    System.out.println("rotate后顺序:" + list);
  }
  @Test
  public void testSearch() {
    System.out.println("给定的list:" + list);
    System.out.println("max:" + Collections.max(list));
    System.out.println("min:" + Collections.min(list));
    System.out.println("frequency:" + Collections.frequency(list, "a李四"));
    Collections.replaceAll(list, "a李四", "aa李四");
    System.out.println("replaceAll之后:" + list);
    // 如果binarySearch的对象没有排序的话,搜索结果是不确定的
    System.out.println("binarySearch在sort之前:" + Collections.binarySearch(list, "c赵五"));
    Collections.sort(list);
    // sort之后,结果出来了
    System.out.println("binarySearch在sort之后:" + Collections.binarySearch(list, "c赵五"));
    Collections.fill(list, "A");
    System.out.println("fill:" + list);
  }
  @Test
  public void testOther() {
    List<String> list1 = new ArrayList<String>();
    List<String> list2 = new ArrayList<String>();
    // addAll增加变长参数
    Collections.addAll(list1, "大家好", "你好","我也好");
    Collections.addAll(list2, "大家好", "a李四","我也好");
    // disjoint检查两个Collection是否的交集
    boolean b1 = Collections.disjoint(list, list1);
    boolean b2 = Collections.disjoint(list, list2);
    System.out.println(b1 + "\t" + b2);
    // 利用reverseOrder倒序
    Collections.sort(list1, Collections.reverseOrder());
    System.out.println(list1);
  }
}
로그인 후 복사

【相关推荐】

1. Java免费视频教程

2. YMP在线手册

3. 全面解析Java注解

위 내용은 컬렉션 도구 클래스는 네 가지 정적 메서드 작업을 제공합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿