1、操作集合(Collection以及Map)的工具类:Collections
2、 面试题:区分Collection与Collections
一、
Collections的排序操作:
reverse(List):反转List中元素的顺序
shuffle(List):对List中的元素进行随机排序
sort(List):根据元素的自然顺序对指定List集合元素按升序排序
sort(List,Comparator):根据指定的Comparator产生的顺序对List集合进行排序(需要造一个Comparator对象)
swap(List,int,int):指定List集合中的i处元素和j处元素进行交换
代码解析:
package Collections;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
/*
* 操作集合(Collection以及Map)的工具类:Collections
*
* 面试题:区分Collection与Collections
* */
public class TestCollections {
/*
* reverse(List):反转List中元素的顺序
* shuffle(List):对List中的元素进行随机排序
* sort(List):根据元素的自然顺序对指定List集合元素按升序排序
* sort(List,Comparator):根据指定的Comparator产生的顺序对List集合进行排序
* swap(List,int,int):指定List集合中的i处元素和j处元素进行交换
*
*
* */
@Test
public void testCollections1() {
List list=new ArrayList();
list.add(123);
list.add("ss");
list.add(456);
list.add("TT");
System.out.println(list);//反转
Colletions.reverse(list);
}
}
二、
public class TestCollections {
@Test
public void testCollections2() {
List list=new ArrayList();
list.add(123);
list.add(21);
list.add(456);
list.add(12);
Object obj=Collections.max(list);
System.out.println(obj);
int count=Collections.frequency(list, 456);//frequency:指定小括号中第二个元素在第一个几何中的出现次数
System.out.println(count);
//实现List的复制
// List list1=new ArrayList();//错误的实现方式:因为新建的list1的长度为0,而list的长度为4。
//正确的写法
List list1=Arrays.asList(new Object[list.size()]);//造一个list1长度为list集合的长度。
Collections.copy(list1, list);
System.out.println(list1);
}
}
三、同步控制(线程安全与不安全)
1、
List list=new ArrayList();//使用ArrayList导致线程不安全(当有多个线程操作这个时,可能会出现问题)
线程安全的写法:
List list2=Collections.synchronizedList(list);
2、代码:
@Test
public void testCollections2() {
List list=new ArrayList(); //线程不安全
list.add(123);
list.add(21);
list.add(456);
list.add(12);
Object obj=Collections.max(list);
System.out.println(obj);
int count=Collections.frequency(list, 456);//frequency:指定小括号中第二个元素在第一个几何中的出现次数
System.out.println(count);
//实现List的复制
// List list1=new ArrayList();//错误的实现方式:因为新建的list1的长度为0,而list的长度为4。
//正确的写法
List list1=Arrays.asList(new Object[list.size()]);//造一个list1长度为list集合的长度。
Collections.copy(list1, list);
System.out.println(list1);
System.out.println("% %");
//线程安全的写法
List list2=Collections.synchronizedList(list);
System.out.println(list2);
}
四、Enumeration迭代器:
Enumeration现在用Iterator:①、Enumeration中的hasMoreElements( )用Iterator中的hasNext( )代替;nextElements( )用next( )代替。
实例代码:
结果:
五、练习题: