/*
*1 Collections.sort(list集合,比较器);
*sort方法不仅可以对list进行自然排序,还可以根据需求定义比较器进行排序。
*sort方法不能对Set集合进行排序。
*binarySearch方法对集合进行插入,且保证集合有序,如果查找的元素不存在
*则返回比该元素大一个位置的元素的下标加一的相反数,他的原理是折半查找。
*fill方法可以将list集合中所有的元素替换成指定元素。
*练习,将集合中部分元素替换成指定元素。
*replaceAll方法将某一元素替换成指定元素。
*reverse方法将所有的元素反转。
*swap方法将集合中指定的两个元素置换位置。
*shuffle方法将集合中的所有元素随机排列一次。
*/
import java.util.*;
public class CollectionsDemo {
public static void main(String[] args) {
//sortDemo();
//maxDemo();
//binarySearchDemo();
//fillDemo();
//replaceAllDemo();
shufleDemo();
}
public static <T> void sop(T t)
{
System.out.println(t);
}
//将集合中的所有元素随机排列一次
public static void shufleDemo(){
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("zz");
sop(list);
Collections.shuffle(list);
sop(list);
}
//将某一元素替换成指定元素。
public static void replaceAllDemo()
{
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("zz");
sop(list);
//Collections.replaceAll(list,"aaa","pp");
//Collections.reverse(list);
Collections.swap(list,1, 2);
sop(list);
}
//将list集合中所有的元素替换成指定元素。
public static void fillDemo()
{
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("zz");
sop(list);
Collections.fill(list,"pp");
sop(list);
}
//binarySearch方法对集合进行插入,且保证集合有序.
public static void binarySearchDemo()
{
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("zz");
//使用sort方法进行排序
Collections.sort(list);
sop(list);
int index=Collections.binarySearch(list,"oo");
sop(index);
}
//取最大值
public static void maxDemo()
{
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("zz");
//使用sort方法进行排序
Collections.sort(list);
sop(list);
//使用max方法取最大值。
String max=Collections.max(list);
sop("max="+max);
}
//使用sort方法进行排序。
public static void sortDemo()
{
List<String> list=new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkk");
list.add("qq");
list.add("z");
sop(list);
Collections.sort(list,new Comlength());
sop(list);
}
}
//定义比较字符串长度的比较器。
class Comlength implements Comparator<String>{
public int compare(String o1, String o2) {
if(o1.length()>o2.length())
return 1;
else if(o1.length()<o2.length())
return -1;
else return o1.compareTo(o2);
}
}
/*
* reverseOrder()方法给TreeSet集合传递一个逆序比较器,将所有元素反序。
* reverseOrder()还有一个重载方法reverseOrder(Comparator<T> cmp)
返回一个比较器,它强行逆转指定比较器的顺序。
*
*/
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class CollectionsDemo2 {
public static void main(String args[])
{
orderDemo();
}
public static void orderDemo()
{
//调用有参的reverseOrder方法,首先按照其参数比较器对集合进行排序,再强行将集合元素反序。
TreeSet<String> ts=new TreeSet<String>(Collections.reverseOrder(new StrComparator2()));
ts.add("abvde");
ts.add("a");
ts.add("kk");
ts.add("ccc");
Iterator<String> it=ts.iterator();
while(it.hasNext())
{
sop(it.next());
}
}
public static <T> void sop(T t)
{
System.out.println(t);
}
}
//定义一个比较器
class StrComparator implements Comparator<String>
{
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}
//定义一个比较器
class StrComparator2 implements Comparator<String>
{
public int compare(String o1, String o2) {
if(o1.length()>o2.length())
return 1;
if(o1.length()<o2.length())
return -1;
return o1.compareTo(o2);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。