컬렉션 도구 클래스는 컬렉션/지도에 대한 다양한 작업을 제공합니다. 이번 글에서는 주로 Power Node Java Academy에서 작성한 Collections 도구 클래스를 소개합니다. 필요한 친구들이 참고하면 됩니다
Collections 도구 클래스는 4가지 범주로 나눌 수 있는 컬렉션/지도에 대한 많은 작업을 제공합니다. , 모두 정적(정적) 방식입니다:
1. 정렬 작업(주로 List 인터페이스와 관련됨)
ℓ reverse( 목록 목록): 지정된 목록 컬렉션의 요소 순서를 뒤집습니다.
z shuffle(목록 목록): 목록의 요소를 무작위로 정렬(셔플)합니다. 🎜>
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); }
역순: [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]
검색 및 바꾸기(주로 컬렉션 관련) 인터페이스)
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
빈도: 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
보안 문제를 해결합니다. 동시에 수집합니다. HashSet, ArrayList 및 HashMap은 모두 스레드에 안전하지 않습니다. 동기화를 고려해야 하는 경우 다음 방법을 사용하세요. 이러한 메소드에는 주로 동기화된Set, 동기화된SortedSet, 동기화dList, 동기화된맵, 동기화된SortedMap이 포함됩니다. 특히, 컬렉션을 순회하기 위해 반복 방법을 사용할 경우 반환된 컬렉션을 수동으로 동기화해야 합니다.
Map m = Collections.synchronizedMap(new HashMap()); ... Set s = m.keySet(); // Needn'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); }
1. disjoint(Collection> c1, Collection> c2) - 지정된 두 컬렉션에 동일한 요소가 없으면 true를 반환합니다.
2. addAll(Collection super T> c, T... a) - 지정된 컬렉션에 지정된 모든 요소를 추가하는 편리한 방법입니다. 데모:
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
3. Comparator
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 Listlist = 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!