首页 > 其他分享 >12-LinkedHashSet

12-LinkedHashSet

时间:2024-09-09 21:26:59浏览次数:9  
标签:12 LinkedHashSet String int Student compareTo public name

LinkedHashSet

  • HashSet得到的数据是无序的--->能不能得到的数据是有序的,嫩不能按照输入原序输出?---->LinkedHashSet

特点

  • 唯一
  • 有序(按照输入顺序输出)
  • 多了一个总链表,按装入顺序串在一起

原理

  • 其实就是在HashSet的基础上,多了一个总的链表,这个总链表将放入的元素串在一起,方便有序的遍历。

比较器引入

比较器的使用

  1. 以int类型为案列:

    • 比较思路:将比较的数据做差,然后返回一个int类型的数据,将这个int类型的数值 按照=0 >0 <0
  2. 比较String类型的数据

    • String类实现了CompareTo接口,这个接口有一个抽象方法compareTo,String类中重写这个方法即可
            String a = "A";
            String b = "B";
            //String类里有compareTo方法以供比较
            System.out.println(a.compareTo(b));
    
  3. 比较double类型数据

            double a = 9.6;
            double b = 9.3;
            System.out.println(((Double) a).compareTo((Double) b));
            //将a转成Double,调用compareTo,传入b转成Double的值,再输出
    
  4. 比较自定义的数据类型

    • 内部比较器
      1. 实现Comparable接口
      2. 对compareTo进行重写
    //学生类
    public class Student implements Comparable<Student>{
        private int age;
        private double height;
        private String name;
    
        @Override
        public int compareTo(Student o) {
            //按照年龄比
    /*        return this.getAge()-o.getAge();//this-->当前对象*/
    
            //按照身高比
    /*        return ((Double)(this.getHeight())).compareTo((Double) o.getHeight());*/
            //转换成Double后直接用Double里的compareTo方法进行比较
    
            //按照名字进行比较
            return this.getName().compareTo(o.getName());
            //name就是String类型,直接用String里的compareTo
        }
        //后面是get/set发法等
    
    public class Test02 {
        public static void main(String[] args) {
            //比较两个学生
            Student s1 = new Student(10, 160.5, "lili");
            Student s2 = new Student(14, 170.5, "nana");
            //没有compareTo--->自己实现Comparable接口--->重写compareTo方法
            System.out.println(s1.compareTo(s2));
        }
    }
    
    • 外部比较器

      
      public class Student {
          private int age;
          private double height;
          private String name;
      
          public Student(int age, double height, String name) {
              this.age = age;
              this.height = height;
              this.name = name;
          }
      
          @Override
          public String toString() {
              return "Student{" +
                      "age=" + age +
                      ", height=" + height +
                      ", name='" + name + '\'' +
                      '}';
          }
      
          public double getHeight() {
              return height;
          }
      
          public void setHeight(double height) {
              this.height = height;
          }
      
          public int getAge() {
              return age;
          }
      
          public void setAge(int age) {
              this.age = age;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      }
      
      class BiJiao01 implements Comparator<Student> {//外部比较器-->实现Comparator接口-->重写compare方法
          @Override
          public int compare(Student o1, Student o2) {//传入两个学生
              //比较年龄
              return o1.getAge()-o2.getAge();
          }
      }
      class BiJiao02 implements Comparator<Student> {//再写一个,模块化
      
          @Override
          public int compare(Student o1, Student o2) {
              //比较名字
              return o1.getName().compareTo(o2.getName());
          }
      }
      class BiJiao03 implements Comparator<Student> {//再写一个,模块化
      
          @Override
          public int compare(Student o1, Student o2) {
              //在年龄相同的情况下,比较身高
              if ((o1.getAge()- o2.getAge())==0){
                  return ((Double)o1.getHeight()).compareTo((Double) o2.getHeight());
              }else {
                  return o1.getAge()- o2.getAge();
              }
          }
      }
      
              //比较两个学生
              Student s1 = new Student(10, 160.5, "lili");
              Student s2 = new Student(14, 170.5, "nana");
              //获取外部比较器
              Comparator bj1 =new BiJiao01();//接口等于实现类-->方便多态
              System.out.println(bj1.compare(s1, s2));//调用外部比较器方法
              bj1 = new BiJiao02();//多态
              System.out.println(bj1.compare(s1, s2));
      
  5. 外部比较器和内部比较器谁好?

    • 外部比较器好,多态,扩展性好

标签:12,LinkedHashSet,String,int,Student,compareTo,public,name
From: https://www.cnblogs.com/Mc9r4dy/p/18405357

相关文章

  • 概率论原理精解【12】
    文章目录诱导拓扑概述定义与概念性质与特点应用与实例总结详细解释一、定义二、计算三、例子四、例题拓扑学中子空间详细解释一、定义二、性质三、例子拓扑空间族一、定义与性质二、例子三、应用与意义参考文献诱导拓扑概述是数学中构造拓扑的一种方法,它通过......
  • 51nod 1243 排船的问题
    51nod1243排船的问题求最长绳子最短,考虑二分答案,判断时我们优先向左放,看是否能全放下。#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintn,x,m;intpos[50005];intcheck(intmid){ intp=x;//偏差地图 intx2=x*2; intmx=m+x;//偏差地图 ......
  • 河南省12123公安厅临牌打印如何下载打印控件
    公安交通管理综合应用平台打印控件安装失败,河南省公安厅临牌打印如何下载打印控件,12123临牌系统怎么安装打印控件?   关于“12123河南省公安厅临牌打印如何下载打印控件怎么安装打印控件”的问题,实际上,交管12123APP主要用于在线申请临时号牌、查询车辆信息、处理交通违......
  • 如何成为一名黑客?小白必学的12个基本步骤
     黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。如果你想成为一名优秀的黑客,下面是12种最重要的基础条件,请认真阅读:1.学习UNIX......
  • 如何成为一名黑客?小白必学的12个基本步骤
     黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。如果你想成为一名优秀的黑客,下面是12种最重要的基础条件,请认真阅读:1.学习UNIX......
  • 解决 蚁剑AntSword 连接后 ,命令回显 有问题 (ret=127) 的方法
    在渗透测试过程中,我们在连接上蚁剑后,想要进行 命令执行查看一些信息,发现无论输入任何指令,返回的信息只有ret=127,要解决这种问题,为大家提供一个解决方案。蚁剑软件,命令回显只有ret=127​这种情况,可能是因为禁用了某些函数,上传一个php文件,查看一下​......
  • 东芝 TB5128FTG 强大性能的步进电机驱动器
    概述TB5128FTG它以高精度和高效能为设计理念,采用PWM斩波方法,并内置时钟解码器。通过先进的BiCD工艺制造,这款驱动器提供高达50V和5.0A的输出额定值,成为广泛应用场景中的强劲解决方案。主要特性TB5128FTG拥有众多确保高性能、可靠性和灵活性的特性:BiCD工艺集成:在......
  • 51nod 1296 有限制的排列
    题目链接学习链接设状态\(dp[i][j]\)表示整数\([1,i]\)满足要求的排列中,最后一个数选\(j\)的排列数。开一个数组记录他的状态:把前面已选好的序列中大于等于\(j\)的数都加一后再把\(j\)加到后面。#include<bits/stdc++.h>usingnamespacestd;#definelllong......
  • Vue——day12之组件
    目录组件类型非单文件组件整体代码示例 小总结常见注意点组件的嵌套代码示例VueComponentVC和VM内置关系单文件组件单文件组件整体代码SchoolStudentAppmain.jsindex.html总结组件类型        在Vue中,组件是构建用户界面的核心概念之一。Vue中......
  • D45XT120-ASEMI无人机专用D45XT120
    编辑:llD45XT120-ASEMI无人机专用D45XT120型号:26MT160品牌:ASEMI封装:DXT-5批号:2024+现货:50000+最大重复峰值反向电压:1200V最大正向平均整流电流(Vdss):45A功率(Pd):大功率芯片个数:5引脚数量:5安装方式:直插类型:整流扁桥、整流桥正向浪涌电流:450A正向电压:1.00V~1.10V封装......