Java基础之集合框架--Collections工具类之max()方法

max 方法一个参数的源码:

public static > T max(Collection coll) {
        Iterator i = coll.iterator();
        T candidate = i.next();

        while (i.hasNext()) {
            T next = i.next();
            if (next.compareTo(candidate) > 0)
                candidate = next;
        }
        return candidate;
    }
max 方法两个个参数的源码:
 @SuppressWarnings({"unchecked", "rawtypes"})
    public static  T max(Collection coll, Comparator comp) {
        if (comp==null)
            return (T)max((Collection) coll);

        Iterator i = coll.iterator();
        T candidate = i.next();

        while (i.hasNext()) {
            T next = i.next();
            if (comp.compare(next, candidate) > 0)
                candidate = next;
        }
        return candidate;
    }


package newFeatures8;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;



/* Collections.max(coll)方法演示 
 * 方法定义:注意:方法的参数是Collection接口,也就是说只要是其子类
 *  public static > T max(Collection coll)
 *  我不明白为什么泛型限定里要明写extends Object,哈哈,你牛,你就写一个不是Object子类的试试
 *  根据元素的自然顺序 返回给定 collection 的最大元素。 
 */



public class CollectionsDemo {

	public static void main(String[] args) {
		maxElementDemo();
	}
	/**
	 * @author ljh
	 * @param nothing
	 * @return void
	 * @since 1.2
	 * @description 
	 */
	public static void maxElementDemo(){
		//
		List list=new ArrayList<>();
		list.add("abcd");//String类本身就是实现了Comparable接口
		list.add("kkkkk");
		list.add("z");
		list.add("zz1");
		list.add("zz");
		list.add("qq");
		list.add("qq");
		list.sort(null);//先进行排序 Collections.sort(list);
		System.out.println(list);
		String max=Collections.max(list);//[abcd, kkkkk, qq, qq, z, zz, zz1]
		System.out.println("max="+max);//max=zz1
		
		System.out.println("---------------------");
		//返回指定比较器所定义的最大元素
		max=Collections.max(list,new strLenCompartor());
		System.out.println("maxLength="+max);
		
		/*
		 * 1.8对list 集合新增的方法:
		 * (1:)default void sort(Comparator c)
		 * (2:)default void forEach(Consumer action)
		 * (3:)default Stream parallelStream()
		 * (4:)default void replaceAll(UnaryOperator operator)
		 * (5:)default boolean removeIf(Predicate filter)
		 * (6:)default Spliterator spliterator()
		 * (7:)default Stream stream()
		 */
		
		
	}
	/**
	 * 
	 * @author ljh
	 * @description 静态内部类
* 按照字符串的长度进行排序,如果字符串长度相同按按照名称排序 */ static class strLenCompartor implements Comparator{ @Override public int compare(String s1, String s2) { int num=new Integer(s1.length()).compareTo(new Integer(s2.length())); //当主要条件相同一定要按照次要条件排序 if (num==0) { return s1.compareTo(s2); } return num; } } }



你可能感兴趣的:(java,集合框架,Collections工具类,java,集合框架,Collections工具类)