Java中Collections的binarySearch()方法

【 Java 】工具类 —— Collections 与 Arrays 的实用操作全解析 本文主要介绍了 Java 中的 Collections 和 Arrays 工具类的相关操作。 阅读详情

Java中Collections的binarySearch方法
方法一

文章转自:https://www.cnblogs.com/stonesingsong/p/6548646.html

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

此方法传入一个实现了Comparable接口的对象类的列表和要查找的元素。

创建实现了Comparable接口的对象类

public class Student1 implements Comparable<Student1> {

    private String name;
    private int age;

    public Student1() {
    }

    public Student1(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public int compareTo(Student1 s) {
        int num = this.age - s.age;
        int num1 = (num == 0 ? this.name.compareTo(s.name) : num);
        return num1;
    }
}

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

import cn.stone.comparable_comparator.Student1;

public class Student1Test {
    public static void main(String[] args) {
        List<Student1> list1 = new ArrayList<Student1>();
        list1.add(new Student1("林青霞", 27));
        list1.add(new Student1("风清扬", 30));
        list1.add(new Student1("刘晓曲", 28));
        list1.add(new Student1("武鑫", 29));
        list1.add(new Student1("林青霞", 27));
        
        int index=Collections.binarySearch(list1, new Student1("林青霞", 27));
        System.out.println(index);
    }
}

方法二

public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

此方法传入一个列表,要查找的元素,以及一个比较器。

创建对象类

public class Student2 {

    private String name;
    private int age;

    public Student2() {
    }

    public Student2(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import cn.stone.comparable_comparator.Student2;

public class Student2Test {
    public static void main(String[] args) {
        List<Student2> list2 = new ArrayList<Student2>();
        list2.add(new Student2("林青霞", 27));
        list2.add(new Student2("风清扬", 30));
        list2.add(new Student2("刘晓曲", 28));
        list2.add(new Student2("武鑫", 29));
        list2.add(new Student2("林青霞", 27));

        int index1 = Collections.binarySearch(list2, new Student2("林青霞", 27),
                new MyComparator());
        System.out.println(index1);
    }
}

class MyComparator implements Comparator<Student2> {
    @Override
    public int compare(Student2 s1, Student2 s2) {
        int num = s1.getAge() - s2.getAge();
        int num1 = (num == 0 ? s1.getName().compareTo(s2.getName()) : num);
        return num1;
    }
}

注1:排序必须是升序

注2:方法二比较器也可采用匿名类实现

AI算力瓶颈与系统优化实战指南 AI算力瓶颈已成为制约人工智能发展的关键因素,特别是在处理transformer类模型时,传统的冯·诺依曼架构面临严重的'内存墙'问题。通过硬件加速、系统优化和算法改进的三级策略,可以有效提升资源利用率。在嵌入式AI领域,结合量化、剪枝和专用指令集扩展等技术,能在资源受限设备上实现高效推理。这些优化方法在自动驾驶、工业视觉等场景中已展现出显著价值,推动AI应用从云端向边缘迁移。随着AI算力需求的持续增长,掌握系统优化技能将成为开发者的核心竞争力。 阅读详情

相关推荐

Redis中什么是Big Key(大key)问题?如何解决Big Key问题?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一

weixiaohuai的博客 3万+

Java Collections BinarySearch()方法与示例

集合类binarySearch()方法 (Collections Class binarySearch() method) Syntax: 句法: public static int binarySearch(List l, Type key_ele); public static int binarySearch(List l, Type key_ele, Compara...

cumudi0723的博客 792

WPS专业版自带字体

WPS专业版其中一个好处就是自带了部分有版权的字体,就算你安装了没买授权,他也会给你在系统里面安装上这些字体,至于没授权继续用合不合规我不知道。但是带来的实实在在的好处就是有些子他支持的全啊。 /usr/share/fonts/wps-office/FZWBK.TTF: 方正魏碑_GBK,FZWeiBei\-S03:style=Regular /usr/share/fonts/wps-office/FZFSK.TTF: 方正仿宋_GBK,FZFangSong\-Z02:style=Regular /us

chenqioulin的博客 5698

java中binarysearch是什么,Java Collections.binarySearch()用法及代码示例

java.util.Collections.binarySearch()方法是一个java.util.Collections类方法,该方法返回对象在排序列表中的位置。// Returns index of key in sorted list sorted in// ascending orderpublic static int binarySearch(List slist, T key)//...

weixin_29061509的博客 996

springboot整合sharding-jdbc实现分库分表详解

springboot整合sharding-jdbc实现分库分表详解

congge 9090

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

Java基础之集合框架--Collections.binarySearch()

package newFeatures8; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; /* * public static int binarySearch(

ljh_learn_from_base的博客 5806

Higress 入门:初探阿里云原生 AI 网关

Higress 是一款由阿里巴巴推出的云原生 API 网关,其内核基于 Istio 和 Envoy。与传统 API 网关不同,它深度聚焦于 AI 场景,支持国内外众多主流模型供应商,如 OpenAI、百度文心一言等,还兼容基于 vllm/ollama 等自建的 DeepSeek 模型,能够满足不同类型企业对 AI 能力集成与管理的需求。Higress 作为一款功能强大的云原生 API 网关,在 AI 时代展现出独特的优势。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1866

binarysearch java_java Collections.binarySearch 用法

package testCollections;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/*** @Author: zhilei.wang* @Date: 2019/11/11 14:08* @Version 1.0*/publ...

weixin_42552124的博客 275

OpenClaw实战-行政与HR必备:AI驱动的办公自动化

智能会议纪要自动生成会议时间智能协调自动提醒和跟进简历智能筛选和匹配度分析面试安排自动化入职办理流程化通知公告一键发布发票识别和报销辅助资产管理数字化让AI处理繁杂的事务性工作,让您有更多时间专注于更有价值的战略和管理任务。

gaoxiang_120的专栏 219

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

在利用MIKE建立水动力模型之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数据、风场数据、潮位和海流观测资料和站点潮汐调和常数资料等。本篇主要介绍这些资料的获取与处理。

晏长街的博客 5948

【集合框架】

集合是包含多个对象的简单对象,所包含的对象称为元素。 Set(集)中元素不允许重复。 List(列表)中元素允许重复,有下标,有序。 Map(映射)中每个元素包含一对,键不允许重复,值允许重复。 1、Collection接口 返回值 描述 boolean add(E e)添加元素 addAll(Collection c)添加集合中所有元...

better_zhang的博客 199

leaflet 综合教程170+ 【目录 】(已包含162篇文章)

vue+leaflet系列教程旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。注意本示例目录中的内容可能加载是vue+openlayers的示例, 本目录是要加载vue+leaflet的示例,只是内容少,逐渐更新中。

大剑师兰特的GIS世界 1万+

java.util.Collections.binarySearch()方法

java.util.Collections.binarySearch()方法,参数为集合和对象,返回结果是该对象在集合中的位置。

m0_69844718的博客 271

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java】Collections 类的使用方法

1. Collections 的 api 可以在 Java API 文档中查找。 Java Platform SE 7 https://docs.oracle.com/javase/7/docs/api/2. Collections.sort() 的用法 // 自定义一个 Person 类作为排序的对象 class Person implements Comparable<Person> { @Override public String toString() { return

xiaoyu_wu的博客 216

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java compareTo 和 binarySearch

1.compareTo( ) 函数 两个维度的compareTo 方法如下写: public int compareTo(WordProperty o) { long diff = this. cityId - o. cityId; diff = ( diff == 0) ? this. typeScore - o. typeScore

水墨江南 503

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java入坑之路】关于Collections.binarySearch查找结果不符合预期的探究

目录 前言 正文 总结 前言 今天学习到辅助工具类Collections的使用(注意Collection和Collections的区别,前者是一个接口,后者是一个工具类,可以帮助我们对集合进行排序或者查找等操作),Collections中有一个二分查找方法,在使用binarySearch()时,遇到了一些问题,通过查询资料了解到问题的原因,写一篇博客记录一下。 正文 这里直接使用Ar...

Qonent的博客 7970

Java中的Collection和Collections是啥关系?Collections中常用的静态方法有哪些,调用sort()方法重写compareTo()方法

Collection和Collections是啥关系? Collection是集合接口 Collections是集合的操作类 Collections常用的静态方法 sort() 可以对集合进行排序,不能对复杂的集合排序,需要先制定排序规则(重写compareTo()方法) 实现一个类的对象之间比较大小 1.该类要重写Comparable接口的compareTo()方法,自定义比较规则 返...

m0_46666979的博客 368

Collections类的常用方法!

1.sort(Collection)方法的使用(含义:对集合进行排序)。 public class Practice { public static void main(String[] args){ List c = new ArrayList(); c.add("l"); c.add("o"); c.add("v"); c.add("e");

刘珂的博客 2899

java Collections工具类辅助方法非Collection接口

提供了对Set、List和Map排序、填充和查找元素等辅助方法 Collections.shuffle() 随机排列容器内元素Collections.reverse() 逆序排列Collections.sort() 递增排序Collections.binarySearch() 查找元素,并返回元素的索引 List<String> list =new ArrayList<&gt...

biezanhan0147的博客 119

Collections中sort(),binarySearch(), shuffle()源代码的简单分析

sort()     可以看到,Collections并不是直接对List进行排序操作,这是因为排序过程中可能会涉及大量的随机访问,类似于LinkedList这样的链表结构就会十分耗时。所以先将List转换为Arrays(普通数组),然后调用Arrays.sort()进行排序。     完成排序之后,再一个一个地,把Arrays的元素复制到List中。         

1363

Collections源码

Collections 是java集合框架中的一个工具类,主要用于Collectiont提供的通用算法,比如:**排序**(sort)、**二分查找**(binarySearch)、**洗牌**(shuffle)、**旋转**(rotate)

我的博客 281

笔记 第13章 集合(9)Collections常用方法介绍

Collection 常用方法介绍,还有小建议哦!

yu_duan_hun的博客 1104

Java中集合工具类collections

java中集合工具类collections

qq_45437885的博客 530

Collections算法类

Collections类定义了一系列用于操作集合的静态方法。 常用方法: 1.sort():排序(默认是升序排列,降序实现方法) 如果ArrayList的泛型指定为String int等类型,可以通过Arrays.sort(Object o);排序,但如果是更复杂的类的对象,则需要通过一下方法: 该类需实现Comparable接口,并重写compareTo()方法。 Students类:...

weixin_30448685的博客 211

利用Collections类对基础类型进行排序

利用Collections类下的sort()方法直接对基础类型进行排序,代替冒泡排序,选择排序等方法。 package com.Collection; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Collections2 { public sta

Void_Script0的专栏 289
上一篇: Java中final、finally、finalize的区别与用法
下一篇: 什么是servlet ?简述servlet执行原理?生命周期是怎样的?
changleeei
博客等级 码龄7年 6粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值