注意不是Collection(接口),是Collections(s不可掉)。
对于Collections类的定义可以用一句话来描述"该类只提供了一些静态方法(实际上有三个常量),通过这些方法可以对集合对象进行操作或返回集合对象。"下面对其所提供方法进行简单介绍。
Collections类中对List对象(即实现了List接口的集合类)提供查询、拷贝、填充、排序、乱序、倒置、交换等方法。
需要说明的一点是,对于Java,需要深入掌握的是他的内部机制和原理。对于API掌握到一定的程度就可以了,用得多了,就自然熟悉了。同时,应该多看高手写的程序。到要用的时候,现查现用。但基本的是需要了解JAVA API的框架。
①public static int binarySearch(List List,Object obj)
②public static void copy(List dest,List src)
③public static void fill(List List,Object obj)
④public static void shuffle(List List)//乱序
⑤public static void reverse(List List)//倒置
⑥public swap(List List,int i,int j)//交换
Collections类中对Collection对象(即实现了Collection接口的集合类)提供最大和最小值的方法。其定义如下:
①public static Object max(Collection coll)
②public static Object max(Collection coll,Comparator comp)
③public static Object min(Collection coll)
④public static Object min(Collection coll,Comparator comp)
关于Comparator将在以后的复习中进行描述。
同步
“集合框架”中的List,Set和Map类所提供的方法是非同步的,即不是线程安全的,这使得对集合对象的操作更快,效率更高,这也是它们与历史集合类Vector、Hashtable的不同。但若将这些非同步的集合对象应用到多线程的环境下,即有多个线程同时访问一个集合对象,且至少有一个线程需要更改该对象的情况下,则必须对该集合对象进行外同步操作。该外同步操作
通过Collections类所提供的synchronized()方法来实现,通常是在集合对象的构造方法时完成该同步操作。较为典型的示例如下:
针对ArrayList类,外同步的实现为:
List List=Collections.synchronizedList(new ArrayList());
此外还需注意,对已同步的集合对象进行迭代操作时,还必须通过
关键字synchronizeed对所获得的迭代器对象进行同步,
否则程序会产生不确定的结果。典型实例如下:
List list=Collections.synchronizedList(new ArrayList());
...
...
synchronized(list)
{
Iterator i=list.iterator();
while(i.hasNext())
{
foo(i.next());
}
}
只读(不可更改)
集合的只读处理是指当所有必要的元素都添加到集合后,为避免意外操作修改集合,
而对集合所施加的不可更改操作。Collections类可对Collection对象、List对象、
Set对象、SortedSet对象、Map对象、SortedMap对象进行上述只读处理,其方法描述
如下:
①public static Collection unmodifiableCollection(Collection coll)
②public static Set unmodifiableSet(Set set)
③public static SortedSet unmodifiableSortedSet(SortedSet sortedSet)
④public static List unmodifiableList(List list)
⑤public static Map unmodifiableMap(Map map)
⑥public static SortedMap unmodifiableSortedMap(SortedMap sortedMap)
另外,Collections还可以针对Set、List、Map对象建立不可更改的单子(SingleIton集合),
稍后会进行补充。
示例程序下次补上。
Java常用类之Collections
最新推荐文章于 2022-11-29 18:28:41 发布