java集合(工具類Collections)

/*
 *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);
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章