直接上代码,里面有注释,拷贝下来自己去运行理解
//Collections
import java.util.*;
class ComByLength implements Comparator<String>{
public int compare(String s1,String s2){
int num = s1.length() - s2.length();
return num==0?s1.compareTo(s2):num;
}
}
class test{
public static void main(String[] args){
//static <T extends Comparable<? super T>> void sort(List<T> list)
//需求:希望存储多个可以重复的对象,还希望可以排序,TreeSet可以排序但是不能重复
ArrayList<String> list = new ArrayList<>();
list.add("htmlkkkkkkkk");//String中有排序方法
list.add("javakk");
list.add("mysqlkkkkkkkkkkkkkk");
list.add("javakkkkkk");
//按照集合对象中所属的类自身具备的比较方式进行排序的
//即int compareTo()
//Collections.sort(list);
//System.out.println(list);
//按照自定义的比较方式对集合中的对象进行排序,自定义从长到短
//Collections.sort(list,new ComByLength());
//System.out.println(list);
//得到和给定比较方式相反的比较方式,变为从短到长
//Comparator com = Collections.reverseOrder(new ComByLength());
//Collections.sort(list,com);
//System.out.println(list);
//按照和集合中对象默认的比较方式相反的方式排序
//也就是按照字符串大小从大到小排序
//Collections.sort(list,Collections.reverseOrder());
//System.out.println(list);
//倒序(未排序,即按照添加顺序,反响输出)
//Collections.reverse(list);
//System.out.println(list);
//System.out.println(Collections.max(list));
String max = getMax(list);
System.out.println(max);
}
//前面的泛型<E>表示这个方法自己使用了泛型
//public <E> static E getMax(Collection<? extends E> col){
//前面的泛型<E extends Comparable<? super E>>限定了他必须是Comparable接口的子类,才能排序,才能找出最大值
//也就是说col这个集合中的对象所属的类,必须继承(实现)Comparable接口
public static <E extends Object&Comparable<? super E>> E getMax(Collection<? extends E> col){
Iterator<? extends E> ite = col.iterator();
E obj = ite.next();//得到集合中第一个对象
while(ite.hasNext()){
E object = ite.next();
int num = obj.compareTo(object);
//前面的小于后面的返回负数
if(num<0)
obj = object;
}
return obj;
}
}
import java.util.*;
class test{
public static void main(String[] args){
//<T> T[] toArray(T[] a) --集合转数组
List<String> list = new ArrayList<>();
list.add("htmlkkkkkkkk");
list.add("javakk");
list.add("mysqlkkkkkkkkkkkkkk");
//集合转数组
//给定的数组长度大于集合中对象个数,则使用给定的数组
//给定的数组长度小于集合中对象个数,会创建一个新的数组,数组长度和集合中对象个数相同
//最好是给定数组的长度和集合中对象个数相同
String[] arr = list.toArray(new String[list.size()]);
System.out.println(arr.length);//3
//集合转数组可以防止数据被随意的添加或删除,因为数组长度是固定的
}
}