黑马程序员_日记62_Collections工具类方法

基于STM32与ESP8266的MQTT协议实现阿里云物联网平台远程LED控制 本文详细介绍了如何利用STM32单片机与ESP8266 Wi-Fi模块,通过MQTT协议连接阿里云物联网平台,实现远程控制LED灯的完整物联网项目。内容涵盖硬件连接、阿里云平台配置、MQTT协议与AT指令解析、STM32代码实战以及数据解析与调试技巧,为嵌入式开发者提供了一个清晰、实用的物联网入门实践指南。 阅读详情

——- android培训、java培训、期待与您交流! ———-


import java.util.*;
public class CollectionsDemo 
{
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

    public static void main(String[] args) 
    {
        //建立一个字符串集合
        List<String> list = new ArrayList<String>();

        //添加字符串
        list.add("qbcdef");
        list.add("cef");
        list.add("af");
        list.add("ab");
        list.add("wbf");
        list.add("b");
        list.add("k");

        //sortDemo(list);//字典序排序
        lenSortDemo(list);//字符串长度排序
        //maxDemo(list);//最大字典序字符串
        //maxLenDemo(list);//最大长度字符串
        //binarySearchDemo(list,"af");//二分查找返回指定元素角标
        //注意:如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。
        //binarySearchDemo(list,"aaaaaa");
        sop(Collections.binarySearch(list,"k",new StrLenComparator()));
        //sop(halfSearch(list,"af"));//折半原理测试,返回指定元素角标
        //sop(halfSearch(list,"ac"));//折半原理测试,返回插入点的相反数-1
        //sop(halfSearch_2(list,"c",new StrLenComparator()));//折半自定义比较器查找原理
        //sop(halfSearch_2(list,"k",new StrLenComparator()));//折半自定义比较器查找原理

    }

    //sort
    public static void sortDemo(List<String> list)
    {
        //打印原集合
        sop(list);
        //排序
        Collections.sort(list);
        //打印排序后集合
        sop(list);      
    }

    //sort字符串长度
    public static void lenSortDemo(List<String> list)
    {
        //打印原集合
        sop(list);
        //按字符串长度排序
        Collections.sort(list,new StrLenComparator());
        //打印排序后集合
        sop(list);          
    }

    //max字典序字符串
    public static void maxDemo(List<String> list)
    {
        sop(list);
        //获取字典序最大字
        String max = Collections.max(list);
        //打印max
        sop("max="+max);    
    }

    //获取最长字符串
    public static void maxLenDemo(List<String> list)
    {
        sop(list);
        //获取长度最大字符串
        String max = Collections.max(list,new StrLenComparator());
        //打印max
        sop("max="+max);    
    }

    //binarySearchDemo
    public static void binarySearchDemo(List<String> list,String key)
    {
        //二分查找要求集合必须是有序的,先排序
        Collections.sort(list);
        //根据集合和指定元素使用二分查找,最后返回的是该指定元素的角标
        int index = Collections.binarySearch(list,key);
        //打印指定元素的角标
        sop("index="+index);
    }

    //binaraySearch原理
    public static int halfSearch(List<String> list ,String key)
    {
        sortDemo(list);//字典序排序
        //对已经是自然序的集合进行折半查找
        //头指针,折半指针,尾指针
        int min,mid,max;
        min = 0;
        max = list.size()-1;

        //当头指针小于等于尾指针的时候,循环查找
        while(min <= max)
        {
            mid = (min + max)>>1;//等价于min = (min + max)/2但是移位操作更省资源
            //根据折半得到的指针,取出元素
            String str = list.get(mid);
            //对取出的元素和关键字进行比较
            int num = str.compareTo(key);
            //如果关键字在str的右边
            if(num > 0)
            {
                //头指针不动,尾指针移动
                max = mid - 1;
            }
            //如果关键字在str的左边
            else if( num < 0)
            {
                //头指针移动,尾指针不动
                min = mid + 1;
            }
            //如果关键字等于str
            if( num == 0)
            {
                //返回关键字的角标
                return mid;
            }
        }
        //如果找不到返回插入点的相反数-1
        return -min-1;
    }

    //binaraySearch传自定义比较器原理
    public static int halfSearch_2(List<String> list ,String key,Comparator<String> comparator)
    {
        lenSortDemo(list);//字符串长度排序
        //对已经是自然序的集合进行折半查找
        //头指针,折半指针,尾指针
        int min,mid,max;
        min = 0;
        max = list.size()-1;

        //当头指针小于等于尾指针的时候,循环查找
        while(min <= max)
        {
            mid = (min + max)>>1;//等价于min = (min + max)/2但是移位操作更省资源
            //根据折半得到的指针,取出元素
            String str = list.get(mid);
            //对取出的元素和关键字进行比较
            int num = comparator.compare(str,key);
            //如果关键字在str的右边
            if(num > 0)
            {
                //头指针不动,尾指针移动
                max = mid - 1;
            }
            //如果关键字在str的左边
            else if( num < 0)
            {
                //头指针移动,尾指针不动
                min = mid + 1;
            }
            //如果关键字等于str
            if( num == 0)
            {
                //返回关键字的角标
                return mid;
            }
        }
        //如果找不到返回插入点的相反数-1
        return -min-1;
    }
}

//构造字符串长度比较器
class StrLenComparator implements Comparator<String>
{
    public int compare(String str1 ,String str2)
    {
        int num = new Integer(str1.length()).compareTo(new Integer(str2.length()));
        if(num == 0)
            return str1.compareTo(str2);
        return num;
    }
}

Collections排序方法,排序结果是自然顺序。
这里写图片描述

Collections获取最大元素方法,可以根据自然顺序排序之后,获取最大元素。
也可以自定义比较器,根据自定义比较器排序的结果,获取最大元素。
字典序最大的元素
字典序最大的元素
最长的字符串
最长的字符串
根据字符串长度排序
这里写图片描述
binarySearch的两种情况得到的返回值。
情况一是:关键字在集合内。在集合内则返回关键字的角标
情况二是:关键字不在集合内。不在集合内则返回插入点的相反数-1
这里写图片描述
根据自定义比较器排序后,再用折半查找关键字
这里写图片描述

《网络信息制作与发布》实训全流程:从专题策划、网站构建到前端实现与上线发布 本文详细介绍了WEB设计专题网站从策划到发布的全流程。主要内容包括:1.网络专题设计(确定主题、编写策划方案、素材搜集整理);2.网站结构构建(设计二级栏目、绘制布局图);3.艺术设计(配色方案、版式设计);4.网页制作(使用Dreamweaver进行标准化布局);5.信息发布(通过Dreamweaver和CuteFTP上传文件、网站维护与备份)。以"学习WEB设计"专题为例,采用框架结构,包含20余个栏目,使用深灰和蓝色为主色调。文章提供了完整的操作步骤和技术要点,适用于网站开发学习者 阅读详情

相关推荐

UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)

本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。

weixin_29224309的博客 486

关于Collections.binarySearch的一个大坑!!!!

关于Collections.binarySearch的一个大坑!!!! 问题说明 众所周知,Collections类的各种方法能够提升我们的开发效率,避免重复造轮子。但是笔者最近使用Collections.binarySearch发现了一个大坑,各位使用该方法时请务必注意。 测试代码 package com.daisy.collection; import lombok.extern.slf4j...

ad_yinj的博客 1554

EBS开发_离散工单创建API

--以下代码于20171213在TONY环境中实现 DECLARE     l_iface_rec    wip.wip_job_schedule_interface%ROWTYPE; --工单任务接口表     l_group_id     NUMBER;     l_returnstatus VARCHAR2(40);     l_errormsg     VARCHAR2(2000

蜗牛先生快跑的博客 2596

《ShowYou数组代码》第47题:Arrays.binaraySearch()方法实现二分法查找

附录D 如何吃出健康来:比萨并不是一个食物组 大多数情况,不必太过较真 什么食物健康,什么食物不健康, 应该主要考量常量营养元素 (碳水化合物、蛋白质、脂肪)摄入的比例 以及热量摄入计数 吃一堆垃圾食品不会对健康造成重大影响, 只要小心控制摄入热量总数 但摄入食品的总热量却是影响健康的最重要因素 所以讨论哪种食物健康与否, 远远不如讨论摄入食物的总热量重要 因为超重是威胁健康的一大问题, 远比吃了什么更为关键 哪些是健康食品? 一:水果和蔬菜 热量值不高还含有较高纤维含量, 因为纤维不能真正被人体消化, 所

ADbyCool的博客 547

不用标注数据!用SAM 3零成本搞定遥感图像分割:SegEarth-OV3保姆级上手教程

本文介绍了如何利用SAM 3和SegEarth-OV3实现零标注遥感图像分割,提供从环境配置到结果优化的完整教程。通过开放词汇语义分割技术,用户无需标注数据即可快速获得专业级分割结果,适用于光伏板统计、灾害评估等场景。

weixin_30415113的博客 585

成本会计(第九版)王忠孝课后习题答案解析

在掌握了基础知识之后,我们还需要培养自己的实际操作能力。此外,在学习过程中,遇到困难时,要及时向老师、同学请教,不要害怕暴露自己的不足。三人行,必有我师,每个人都有值得学习的地方。首先,我们需要认真阅读教材,把基础知识掌握牢固。在这里,我建议大家使用《成本会计(第九版)》的配套练习册,这样可以帮助我们检查学习效果。同时,网上的一些优质课程和论坛也是不错的学习资源,例如网易云课堂、中国大学MOOC等。别担心,这里我给大家推荐一些实用的学习资料和方法,帮助你更好地掌握这门课程。出版社: 大连理工大学出版社。

weixin_58833001的博客 1888

JAVA之数组查询binarySearch()方法详解

binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要,binarySearch()有两种参数类型注:此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。⑴.binarySearch(object[ ], object key);如果key在数组中,则返回搜索值的索引

哆啦A梦的博客 4万+

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

二分查找算法(Binary Search)的实现

用二分查找在已排序的数组中查看该数组是否含有一个特定的值是非常快速的,时间复杂度为O(lgn). 二分查找思想很简单,但是实现的时候会在边界条件上出现一些意想不到的问题。 现贴出自己写的程序,供大家参考。 第一个实现是基于迭代方式: /// /// implement Binary Search algorithm through iteration approach. /// ///

Yuwen's Hero 1万+

科研党必看!Zotero+Claude3插件实战:如何用AI高效阅读文献(附详细配置步骤)

本文详细介绍了如何通过Zotero与Claude3插件的深度整合,实现科研文献的高效阅读与管理。从环境配置到核心功能实战,包括智能摘要生成、精准学术翻译和论文写作辅助等,帮助科研人员大幅提升工作效率。特别适合需要处理大量文献的研究者使用。

o0p1q2r3的博客 431

COMSOL金属氢化物-放氢过程

"层流"的出口设置压降函数,解决“找不到一致的初始值”问题,主要是一开始设置出口为1atm的话,压力场过渡太剧烈,不好找到初始解,要么就先算个稳态流场,这种也能求解。注:P0是根据实测PCT的插值曲线(函数名称为:p_iso)得到的,根据初始质量储氢量wtw0,和初始温度条件T0,然后根据函数p_iso(wtw0)*exp(-deltHd/R_const*(1/T0-1/303.15[K]))求解获得。若"初始步长"选择框不勾上,前面0~5s内的求解容易发散,然后求解失败。2、设置"达西定律"的。

qq_24800941的博客 1929

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

U盘无法识别?一条命令轻松修复,数据不丢失

问题描述 U盘经常会遇到提示:无法识别或者需要重新格式等问题,例如下图 修复方法 WIN+R输入cmd 输入chkdsk+盘符:/F /F是修复的意思 更多内容 U盘无法识别或提示需要格式化?别急着格式化丢失数据!本文教你使用Windows自带的命令快速修复U盘文件系统错误,简单几步就能解决问题,让你的U盘恢复正常使用💾✨

XiaoqiangClub的博客 637

Arrays.binarySearch() 方便记忆版

Arrays.binarySearch()返回值主要有两个方法1) binarySearch(Object[], Object key)a: 要搜索的数组 key:要搜索的值 如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。[1] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”

Perfect is shit 3951

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Collections集合工具类、Arrays工具类、其他常用类:System,Runtime,Date,Calendar,Math

1.Collections集合工具类 Collections类是java.util包中的一个集合的工具类,此类中提供了一些操作集合的静态方法,扩展了集合本身的功能。 这个类中的方法都是静态的,不需要创建对象。 Collections和Collection的区别: 1,Collections是java.util包中的一个类,是针对集合的一个工具类,提供一些静态方法对集合操作,...

weixin_30339457的博客 201

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

binarySearch方法详解——全网最细!!!!!

binarySearch方法详解——全网最细!!!!!

weixin_43590500的博客 6454

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java的基础语法(学习篇4)

本来这次应当总结继承的内容了,为什么又绕回来呢?因为。。。前两天做题的时候翻船了,有的东西还是很有用的我却不会用。首先是数组操作类。1.Arrays类类Arrays提供了像排序,检索,复制,比较这样的一系列数组操作的办法。Arrays.sort(数组名):将整个数组按升序排序Arrays.sort(数组名,index1,index2)对数组第index1(包含)到第index2(不包含)的元素按升...

jinyu_mobao的博客 395

关于 Arrays.binarySearch() 方法的分析

Arrays.binarySearch() binarySearch() binarysearch 源码详解

阿劼 1万+

黑马程序员_日记8_JavaSE阶段性习题练习及复习

——- android培训、java培训、期待与您交流! ———-JAVASE阶段性习题练习及复习这篇博客主要是把毕老师出的前四大练习题全部做了一遍,经我反复测试和修改后写得一些JAVASE基础总结。 练习一 已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。 90~100为等级A,80~89为等级B,70~79为等级C, 60~69为等级D,0~59为等级E。

itheima_1llt的专栏 3599

黑马程序员_日记27_JavaString类型的数字排序问题

——- android培训、java培训、期待与您交流! ———-输入一int型的数字字符串 用空格间隔,从小到大排序后,以字符串返回。 “12 0 99 -7 30 4 100 13” 要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。“-7 0 4 12 13 30 99 100”分析: 1 用split方法把字符串切割成String[]类型的数组。 2 把String[]数组

itheima_1llt的专栏 2677

黑马程序员_日记25_Java两个字符串的最大相同子串

——- android培训、java培训、期待与您交流! ———-/* 获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 "abcwerthelloyuiodef" "cvhellobnm"模拟一下: 第一趟: 最大子串:cvhellobnm ↑--------↑ 在长字符串中查找 abcwerthelloyuiodef ↑---

itheima_1llt的专栏 784

黑马程序员_日记26_Java字典序排序练习

——- android培训、java培训、期待与您交流! ———-对字符串中字符进行自然顺序排序。 例如,”vcz1bdAa+cs”–>abccdsvz 思路: 1 把字符串变成字符数组 2 对数组进行排序 3 找到字符数组中’a’第一次出现的位置找到 4 计算要转换的字符个数 5 把字符数组变成字符串import java.util.Arrays; class StringSortD

itheima_1llt的专栏 755

黑马程序员_日记33_Java迭代器基本使用

——- android培训、java培训、期待与您交流! ———-迭代器Iterator测试查阅API,得到迭代器的基本常识: 对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同: 迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection

itheima_1llt的专栏 747

黑马程序员_日记2--Java数组

——- android培训、java培训、期待与您交流! ———-数组复习总结一、数组的定义数组的概念所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序

itheima_1llt的专栏 716

黑马程序员_日记9_Java学习感言

——- android培训、java培训、期待与您交流! ———-学习感言原计划快速看一遍JAVASE视频复习一下,然后直接面试。但是从16号到今天,已经10天了,我才刚刚完成10天的学习。冷静下来,仔细想想还是方法有问题。前段时间听课都没有压力,也就没有经常动手练习,但是累积到做练习四的时候,才发现并不是很熟练,于是沉下心来花了2天的时间回头把所有的练习都不使用eclipse运行一遍,现在感觉基础

itheima_1llt的专栏 713

黑马程序员_日记21_JavaString常用方法

——- android培训、java培训、期待与您交流! ———-String类用来描述字符串,它提供了许多的方法来操作字符串。 那么,在String众多的方法中,常用的方法有哪些呢??1 获取1.1 字符串的长度int length(); 示例:String str = "abcdefg"; str.length();注意不是str.length;1.2 根据索引获取字符char c

itheima_1llt的专栏 662
上一篇: 黑马程序员_日记61_map扩展知识
下一篇: 黑马程序员_日记63_fill替换
回到未来2020
博客等级 码龄12年 27粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值