1、Collections操作集合:查找、替换、排序等方法
class Test11{
public static void main(String[] args){
sortDemo();
}
public static void sortDemo(){
List<String> list = new ArrayList<String>();
list.add("adcd");
list.add("aaa");
list.add("z");
list.add("kkkkk");
list.add("qq");
list.add("z");
sop(list);
Collections.swap(list, 1, 2);//将集合中的位置1和位置2的元素互换一下
Collections.shuffle(list);//将集合中的元素按随机的方式进行排列
int index = Collections.binarySearch(list,"aaaa");//如果未找到,那么查询到的输出结果为自然排序后的-(插入点)-1
sop("index="+index);
Collections.replaceAll(list, "aaa", "pp");//替换元素,即将aaa替换成pp
sop(list);
Collections.reverse(list);//反转
sop(list);
sop("没有排序:"+list);
Collections.sort(list);//自然排序,只能给list排序,不能给set排序
sop("自然排序:"+list);
Collections.sort(list,new straLenComparator());//利用比较器比较
sop("比较器的排序:"+list);
String max = Collections.max(list);//获取最大的
String max2 = Collections.max(list,new straLenComparator());//根据比较器的排序获取最大的
sop("max="+max);
sop("max2="+max2);
Collections.fill(list, "pp");//将集合中的所有元素替换成pp
sop(list);
}
public static void sop(Object obj){
System.out.println(obj);
}
}
class straLenComparator implements Comparator<String>{
public int compare(String s1,String s2){
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return s1.compareTo(s2);
}
}
Collections.reverseOrder()反转
class StrLenComparator implements Comparator<String>{
public int compare(String s1,String s2){
if(s1.length()>s2.length())
return 1;
if(s1.length()<s2.length())
return -1;
return s1.compareTo(s2);
}
}
class Test11{
public static void main(String[] args){
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());//逆向排序
ts.add("abcde");
ts.add("aaa");
ts.add("kkk");
ts.add("cccc");
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("*************");
TreeSet<String> ts2 = new TreeSet<String>(Collections.reverseOrder(newStrLenComparator()));//逆向排序
ts2.add("abcde");
ts2.add("aaa");
ts2.add("kkk");
ts2.add("cccc");
Iterator it2 = ts2.iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
}
}
2、Arrays:用于操作数组的工具类,里面都是静态方法
* Arrays.asList:将数组变成list集合
* 把数组变成list集合有什么好处?
* 可以使用集合的思想和方法来操作数组中的元素
* 注意:将数组变成集合,不可以使用集合的增删方法。
* 因为数组的长度是固定的
* 如果你增删,那么会发生UnsupportedOperationException
*
* 如果数组中的元素都是对象,那么当变成集合时,数组中的元素就直接转成集合的元素
* 如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在
* int[] nums = {2,4,5};
* List<int[]> li = Arrays.asList(nums);
* Integer[] nums = {2,4,5};
* List<Integer> li = Arrays.asList(nums);
*/
class Test11{
public static void main(String[] args){
int[] arr = {2,4,5};
System.out.println(Arrays.toString(arr));
//把数组变成list集合有什么好处?
String[] arr2 = {"abc","cc","kkkk"};
List<String> list = Arrays.asList(arr2);
sop("contains:"+list.contains("cc"));
list.add("qq");//UnsupportedOperationException
sop(list);
}
public static void sop(Object obj){
System.out.println(obj);
}
}