java学习笔记8

2023-11-12

Comparable

Comparable表示可被排序的,实现该接口的类的对象自动拥有排序功能。

对Integer的排序

package com.Factory;
import java.util.*;
public class Test21 {
    public static void main(String[]args)
    {
        List <Integer> list =new  ArrayList();
        for (int i = 0; i <10 ; i++)
        list.add(new Scanner(System.in).nextInt());
    System.out.println("原来的顺序:"+list);
    Collections.sort(list);//对list进行排序
    System.out.println("排序后的顺序:"+list);
    }
}

结果:

原来的顺序:[12, 2424, 435, 63, 643, 75, 986, 25, 73, 757]
排序后的顺序:[12, 25, 63, 73, 75, 435, 643, 757, 986, 2424]

源码:

public interface Comparable<T> {
    public int compareTo(T o);
}

自定义对象同样需要继承Comparable接口,并重写compareTo方法

class Student implements Comparable<Student>{
	int age;
	String name;
	Student(int age,String name){
		this.age = age;
		this.name = name;
	}
	@Override
	public int compareTo(Student o) {
		if(this.age==o.age){
		return this.name.compareTo(o.name);
		}
		return this.age-o.age;
	}
}

上述代码,若学生的年龄不同,则返回年龄差。若年龄相同,则用String重写的compareTo方法比较两个学生的名字,返回0,-1或1,以此来排序。
假如a和b都是实现了Comparable接口的类C的实例,那么只有当a.compareTo(b)的结果与a.equals(b)的结果一致时,才称类C的自然顺序与equals一致。强烈建议将类的自然顺序和equals的结果保持一致,因为如果不一致的话,由该类对象为键的sorted map和由该类对象为元素的sorted set的行为将会变得很怪异。

例如对于一个实现了Comparable接口的元素的有序集合sorted set而言,如果a.equals(b)结果为false,并且a.compareTo(b)==0,则第二个元素的添加操作将会失败,因为在sorted set看来,二者在排序上是一致的,它不报保存重复的元素。

Iterator

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
Iterator 是 Java 迭代器最简单的实现

迭代器 it 的三个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

实例:

package com.Factory;

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("aaa");
        sites.add("bbb");
        sites.add("ccc");
        sites.add("ddd");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

结果:

aaa
bbb
ccc
ddd

删除元素

要删除集合中的元素可以使用 remove() 方法。

以下实例我们删除集合中小于 100 的元素:

package com.Factory;

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<Integer> sites = new ArrayList();
        sites.add(111);
        sites.add(11);
        sites.add(22);
        sites.add(222);

        // 获取迭代器
        Iterator<Integer> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            if(it.next()<100)
            it.remove();//删小于100的
        }
        System.out.println(sites);
    }
}

结果:

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

java学习笔记8 的相关文章

随机推荐

  • 冒泡排序与快速排序【C语言】

    冒泡排序 基本思想 对有n个记录的序列进行冒泡排序 首先将第一个数字与第二个数字进行比较 若为逆序 则将两个数字的顺序交换 然后比较第二个数字与第三个数字 若为逆序 则将两个数字的顺序交换 依此类推 经过第一轮排序后 最大的数字将 下沉 到
  • PHP进行中文URL编转码为GB2312或UTF8

    中文转URL编码 GB2312 urlencode iconv utf 8 gb2312 中国人 中文转URL编码 UTF8 urlencode 中国人
  • ubuntu磁盘扩容方法(简单有效)

    准备工作 使用Vmware进行扩展 在进行磁盘扩展的时候 虚拟机不可以有快照 使用快照管理删除快照 开始扩容 点击 虚拟机 设置 硬盘 扩展 填写扩展大小 分区设置 扩展完成后并还需要在操作系统进行设置才能真正使用 下面有几种方法 第一种方
  • 运行开源库CCPD-RPnet代码,提示「KeyError: Caught KeyError in replica 0 on device 0」错误

    文章目录 问题描述 问题排查 Solution Other 问题描述 通过python3 demo py i demo m models fh02 pth运行车牌识别CCPD开源代码 提示 KeyError Caught KeyError
  • Spark

    1 Spark概述 Spark是一个支持多语言的数据计算 科学计算 机器学习引擎 同时支持单节点或者集群运行模式 其强大的功能包括 批处理 结构化的SQL计算 流式计算 机器学习库 图计算等 2 Spark集群环境的搭建 1 下载解压安装包
  • 骑士周游问题

    算法 1 骑士周游问题 马踏棋盘算法也被称为骑士周游问题 将马随机放在国际象棋的 8x8 棋盘中 0 7 0 7 的某个方格中 马鞍走起规则 马走日字 进行移动 要求每个方格只进入一次 走遍棋盘上全部64个方格 3 会使用到图的遍历算法 D
  • 【Ansible自动化运维实战】使用Asible批量部署Apache

    Ansible自动化运维实战 使用Asible批量部署Apache 一 本次实践目的 二 Plyabook内容 三 运行playbook 一 本次实践目的 将apache批量部署到被控节点 二 Plyabook内容 hosts node1
  • 嵌入式linux闹钟,嵌入式电子闹钟课程设计.doc

    嵌入式系统综合实验 题 目 基于嵌入式的数字闹钟系统设计 学生姓名 秦乙 学 号 20071309087 学 院 电子与信息工程学院 专 业 信息工程 二 一 年 十二 月 二十七 日 目 录 论文标题错误 未定义书签 摘要和关键词错误 未
  • 利用OpenCV的函数matchTemplate()实现在图像中寻找、检索、搜索模板图像【图像模板匹配】

    利用OpenCV的函数matchTemplate 实现在图像中寻找 检索 搜索模板图像 图像模板匹配 在博文 https www hhai cc thread 220 1 1 html 中我们利用直方图的反向投影原理可以寻找图像中具有某个直
  • 绝对干货!初学者也能看懂的DPDK解析

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由Willko发表于云 社区专栏 一 网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升 而网络技术的发展也从1GE 10GE 25GE 40GE 100GE的演变
  • Google pay默认支付(payment)应用之二 -TpHceService默认被disable原因

    根据上篇文章 GooglePay默认支付 payment 应用 之一 我们提到在GmsCore Google play services 核心套件里边声明的TpHceService开机后发现被disabled 那么原因是什么呢 一起来看看吧
  • 宝塔计划 任务执行thinkphp脚本

    cd www wwwroot test com php think content
  • 【持续更新】ubuntu中的git命令

    持续更新 ubuntu中的git命令 git init 初始化本地目录作为本地仓库 git remote add origin xxxxxxx xxxxxxxx是指git地址 本条命令是将本地仓库和远程仓库连接起来 git pull ori
  • VulnHub实战篇六:Me And My Girlfriend靶机渗透记录

    0x00靶机信息 下载地址 下载地址 攻击机ip 172 16 12 137 靶机ip 172 16 12 141 目标 getshell 获取两个flag 并提权至root 0x01过程 首先识别一下目标开启的端口和服务 可以看到目标开启
  • line-height 百分比和数值设置行高

    一 line height的值为百分比 子集元素继承父级元素的距离 1 例如
  • Java Collections singletonMap()方法具有什么功能呢?

    转自 Java Collections singletonMap 方法具有什么功能呢 下文笔者将讲述singletonMap 方法的功能简介说明 如下所示 singletonMap 方法的功能 返回一个不可变的map 里面只包含一个键和值
  • 如何在vscode中使用gdb命令行与打印指针数组

    在debug的程序处于中断状态时 必须是中断状态 可使用 exec command的格式在vscode对应的debug窗口中输出gdb命令 如何打印一个指针数组 以main 函数的指令数组argv为例 可以通过如下指令打印其值 exec x
  • python资本市场财务数据分析_Python对股票财务数据进行可视化分析

    对股票财务数据进行分析是非常必要 但因股票数据量很大 单凭浏览网页或在软件客户端查看是非常浪费精力的一件事 通过Python进行网页数据提取 将财务数据图表化会更加直观 以下代码在Python 3 6环境下通过 注 使用注意 将此代码保存为
  • 一次APM32替换STM32的经历分享

    系列文章目录 这几年相信大家知道STM32系列的芯片价格翻倍的涨 自己玩都快玩不起了 要是用于生产 这得多掏多少钱 所以现在大家都选择了国产芯片 哈哈不能说多差吧 价格你没得说 这是我的一次APM32代替STM32的经历 你是不是也会遇到这
  • java学习笔记8

    Comparable Comparable表示可被排序的 实现该接口的类的对象自动拥有排序功能 对Integer的排序 package com Factory import java util public class Test21 pub