Java基礎-----集合工具類Collections

          Collections類是Java提供的對集合進行操做的工具類;這個類不能生成實例,由於構造器是private;提供的方法都是static方法;
一、提供空的List、Set、Map,不可以進行任何操做,由於它們都是Collections類中實現的private static class,類名都已Empty開頭;沒有提供添加、修改、刪除等操做;進行相關操做會拋出異常java.lang.UnsupportedOperationException
public class ListTest {

	public static void main(String[] args) {
	//	AtomicInteger
		List empty = Collections.EMPTY_LIST;
		empty.add(1);
	}

}
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at cn.trip.core.servlet.ListTest.main(ListTest.java:11)

   Collections.EMPTY_LIST、java

Collections.EMPTY_MAP、安全

Collections.EMPTY_SET工具

二、提供線程安全的Collection、List、Map、Set、SortedMap、SortedSet;Collections類中都有對應的private static class,類名都已Synchronized開頭;

實現原理:部分方法調用是使用synchronized鎖住互斥鎖對象mutex;synchronized (mutex) ;spa

如:線程

public static <T> Collection<T> synchronizedCollection(Collection<T> c)
public static <T> Set<T> synchronizedSet(Set<T> s)
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
public static <T> List<T> synchronizedList(List<T> list)
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
三、提供只讀的Collection、List、Map、Set、SortedMap、SortedSet;Collections類中都有對應的private static class,類名都已Unmodifiable開頭

實現原理:對add、remove、set等對集合進行修改操做的方法拋出異常 throw new UnsupportedOperationException();code

如:對象

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
public static <T> Set<T> unmodifiableSet(Set<? extends T> s)
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
public static <T> List<T> unmodifiableList(List<? extends T> list)
public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)
public static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m)
四、反轉指定List中的元素的順序。

public static void reverse(List<?> list)
public class ListTest {

	public static void main(String[] args) {
           ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("未取反前"+list);
	   Collections.reverse(list);
	   System.out.println("取反後"+list);
	}

}
未取反前[1, 2, 3, 4, 4, 5]
取反後[5, 4, 4, 3, 2, 1]
5.替換List中的指定元素爲新元素的值
public static <T> boolean replaceAll(List<T> list,T oldVal,T newVal)
public class ListTest {

	public static void main(String[] args) {
	  ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("替換前"+list);
	   Collections.replaceAll(list, 4, 8);
	   System.out.println("替換後"+list);
	}

}
替換前[1, 2, 3, 4, 4, 5]
替換後[1, 2, 3, 8, 8, 5]

6.替換List全部元素ip

public static <T> void fill(List<? super T> list,T obj)
public class ListTest {

	public static void main(String[] args) {
           ArrayList list = new ArrayList();
	   list.add(1);
	   list.add(2);
	   list.add(3);
	   list.add(4);
	   list.add(4);
	   list.add(5);
	   System.out.println("替換前"+list);
	   Collections.fill(list, 0);
	   System.out.println("替換後"+list);
	}

}
替換前[1, 2, 3, 4, 4, 5]
替換後[0, 0, 0, 0, 0, 0]
相關文章
相關標籤/搜索