Collections工具类

Collections 是一个操做 Set、List 和 Map 等集合的工具类。安全

Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操做,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。多线程

Collections 类中提供了多个 synchronizedXxx() 方法,该方法可以使将指定集合包装成线程同步的集合,从而能够解决多线程并发访问集合时的线程安全问题。并发

    static class SynchronizedSet<E>
          extends SynchronizedCollection<E>
          implements Set<E> {
        private static final long serialVersionUID = 487447009682186044L;

        SynchronizedSet(Set<E> s) {
            super(s);
        }
        SynchronizedSet(Set<E> s, Object mutex) {
            super(s, mutex);
        }

        public boolean equals(Object o) {
            if (this == o)
                return true;
            // 同步代码块,Vector、Hashtable都是同步方法        
            synchronized (mutex) {return c.equals(o);}
        }
        public int hashCode() {
            // 同步代码块,Vector、Hashtable都是同步方法
            synchronized (mutex) {return c.hashCode();}
        }
    }

Collections类中的方法有:dom

min()、max()、copy()、sort()、binarySearch()、reverse() —— 反转、shuffle() —— 乱序工具

fill() ——把一个对象填充到list里的每个单元、swap(List,int, int):交换元素this

int frequency(Collection,Object):返回指定集合中指定元素的出现次数spa

boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的全部旧值线程

public static <T>
int binarySearch(List<? extends Comparable<? super T>> list, T key) {
    if (list instanceof RandomAccess || list.size()<BINARYSEARCH_THRESHOLD)
        // 适用于ArrayList
        return Collections.indexedBinarySearch(list, key);
    else
        // 适用于LinkedList
        return Collections.iteratorBinarySearch(list, key);
}
相关文章
相关标签/搜索