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

2023-05-16

max 方法一个参数的源码:

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
        Iterator<? extends T> 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> T max(Collection<? extends T> coll, Comparator<? super T> comp) {
        if (comp==null)
            return (T)max((Collection) coll);

        Iterator<? extends T> 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<? extends T>接口,也就是说只要是其子类
 *  public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> 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<String> 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<? super E> c)
		 * (2:)default void forEach(Consumer<? super T> action)
		 * (3:)default Stream<E> parallelStream()
		 * (4:)default void replaceAll(UnaryOperator<E> operator)
		 * (5:)default boolean removeIf(Predicate<? super E> filter)
		 * (6:)default Spliterator<E> spliterator()
		 * (7:)default Stream<E> stream()
		 */
		
		
	}
	/**
	 * 
	 * @author ljh
	 * @description 静态内部类</br>
	 * 按照字符串的长度进行排序,如果字符串长度相同按按照名称排序
	 */
	static class strLenCompartor implements Comparator<String>{
		@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;
		}
	}

}





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基础之集合框架--Collections工具类之max()方法 的相关文章

随机推荐

  • Ubuntu18.04 误删/usr/bin/python3的解决方案

    Ubuntu18 04 误删 usr bin python3的解决方案 这应该是一个链接文件 xff0c Python pip3等指令都会指向它 xff0c 删除之后无法打开Python解释器我在误删之后 首先重新下载了Python3 8
  • 对机器人的认知整理

    机器人的定义与特点 机器人是自动执行工作的机器装置 xff0c 可以接受人的指挥 运行预先编排的程序或者根据人工智能技术指定的原则纲领行动 机器人 包含传感器 执行器 xff0c 能够与物理世界交互 xff0c 可编程 xff0c 能够进行
  • 计算机图形学

    上课时间 xff1a 2 12周周二上午1 2 3节 Lesson1 9月15日 这堂课讲了第1 2 3章节 第一章 概述第二章 计算机图形硬件系统第三章 图形标准 第一章 概述 1 1 定义 计算机图形学是研究怎样用计算机生成 处理和显示
  • Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”

    导出apk失败 使用unity导出apk文件 xff0c 会出现提示 xff1a 需要合适版本的JDK Android SDK和Android NDK xff0c 要找到 下载和安装好合适的版本非常耗费时间 xff0c 网上很多教程指出可以
  • 论文阅读:带有物体级重定位的视觉惯性多实例动态SLAM

    带有物体级重定位的视觉惯性多实例动态SLAM Ren Y Xu B Choi C L et al Visual Inertial Multi Instance Dynamic SLAM with Object level Relocalis
  • Ubuntu内存清理经验整理

    本文档用于整理记录清理ubuntu内存过程中的经验 首先 xff0c 可以使用内置程序 Disk Usage Analyzer 分析 xff0c 直观看到哪些文件夹占用内存较大 另外 xff0c 也可以使用指令du sh sort h查看当
  • 论文阅读 | LOAM:实时Lidar里程计和建图

    Zhang J Singh S LOAM Lidar odometry and mapping in real time C Robotics Science and Systems 2014 2 9 1 9 64 inproceeding
  • 一招解决由于找不到vcruntime140_1.dll,无法继续执行代码

    电脑系统丢失vcruntime140 1 dll文件 xff0c 会导致很多软件跟游戏打不开 xff0c 也无法运行 xff0c 比如常见的ps xff0c pr xff0c 吃鸡游戏等等 那需要我们怎么修复呢 xff1f 相信这个问题困扰
  • 终端/Vscode + GDB调试C++程序

    CMakeLists中需要设置编译类型为Debug set CMAKE BUILD TYPE Debug 下载gdb调试器 span class token function sudo span span class token funct
  • k8s节点加入集群

    k8s节点加入集群流程及常见问题 移除docker yum remove docker docker client docker client latest docker common docker latest docker latest
  • pulsar常用命令

    创建安全认证key bin pulsar tokens create secret key output data admin secret key 创建角色 xff0c 生成token bin pulsar tokens create s
  • 转-docker入门

    Docker入门教程 xff08 详细 xff09 JWei 7的博客 CSDN博客 docker 入门教程
  • 用Bmob实现用户数据添加和查询显示

    我用的例子利用Bmob云服务器实现了让用户上传待出售商品信息 xff0c 以及能浏览在售商品信息的小功能 刚接触Bmob感觉它确实好用 xff0c 但我不得不吐槽那个案例更新的太慢了 xff0c 新版本的SDK跟老版本还是有很大差别的 xf
  • linux中的文件移动

    Linux不同于Windows xff0c 在Windows操作系统中我们只需要傻瓜式的将文件用鼠标拖到目标文件夹即可 xff0c 但是在Linux中移动文件却不是那么的简单 以Ubuntu16 04为例说一下Linux中的文件的移动 1
  • android顶部回退按钮的实现

    最近看来好多关于android顶部导航栏回退的实现 如下图效果 点击返回上级页面 xff0c 网上的大部分都实现特别繁琐 xff0c 其实安卓自带BUFF 在Manifest清单文件中一句代码就能搞定 xff0c 特别easy xff0c
  • 树莓派与Android客户端进行socket通信

    首先 xff0c 需要对树莓派进行配置 xff0c 使其成为AP热点 xff0c 这里我用的树莓派3B自带wifi蓝牙模块 xff0c 树莓派3B作AP热点的方法具体参考https blog csdn net u014271612 arti
  • android客户端控制树莓派GPIO点亮LED灯

    首先需要android客户端与树莓派进行连接 xff0c 树莓派与android客户端利用wifi连接并进行socket通信请参考我的另一片文章 xff1a https mp csdn net postedit 79911322 树莓派与A
  • 百度2014校园招聘 软件研发工程师 笔试题

    一 简答题 xff08 本题共30 xff09 1 动态链接库和静态链接库分别有什么优缺点 xff1f xff08 10 xff09 2 轮询任务调度与抢占式任务调度的区别 xff1f xff08 10 xff09 3 请列出数据库中常用的
  • java基础编程案例

    java编程案例 案例一 xff1a 飞机票查看优惠系统案例二 xff1a 获取素数案例三 xff1a 验证码模块案例四 xff1a 数组元素的复制案例五 xff1a 评委打分案例六 xff1a 数字加密程序案例七 xff1a 模拟双色球系
  • Java基础之集合框架--Collections工具类之max()方法

    max 方法一个参数的源码 xff1a public static lt T extends Object amp Comparable lt super T gt gt T max Collection lt extends T gt c