数组自定义排序、泛型

java使用泛型为不同类型数组排序 java使用泛型为不同类型数组排序 之前想用Java写一个能够给不同数据类型排序的功能,于是我想到了C++中的泛型,Java同样也具有泛型的特性。 但是,后来我发现在java中实现这个功能那个并不像c++中这么简单,java的泛型和c++还是有比较大的区别的。 我遇到的最主要的一点问题就是: c++模板在编译时就会知道传入类型参数的类型是什么,从而可以很方便地限定传入参数类型,并可以在模板中使用传入类型的特有功能。 而java因为某些原因并不会这么做,这就意味着java无法在泛型函数(类)中像c++那样使用 阅读详情

我们使用过数组,如

String[] strs = {"xxx","aaa","kkkk"}

使用sort()方法对数组排序:

Arrays.sort(strs);

遍历:

for (String s : strs){
  System.out.println(s);
}

sort()默认排序:如果是字符串默认安装字母从a-z,如果是数字默认从小到大。

sort方法的第2个参数

Arrays.sort(strs,第2个参数)
#第二个参数,可以传入一个类,来实现自定义排序,比如:按照数组元素长度排序

1、我们首先得写一个实现Comparator的类

import java.util.Comparator;

public class MyCompare implements Comparator {
    @Override
    public int compare(Object o1, Object o2) {
        String a = (String)o1;
        String b = (String)o2;
        if (a.length() > b.length()){
            return 1;
        }else if (a.length() < b.length()){
            return -1;
        }
        return 0;
    }
}

从上面代码可以,看出我们进行了长度的比较。

2、现在来看Arrays.sort方法如何使用到这个类:

        // 数组
        String[] names = {"zhangsan","lisi","wangwu","hanmeimei"};

        // 排序
        Arrays.sort(names, new MyCompare());

        // 遍历输出
        for (String s : names){
            System.out.println(s);
        }

打印结果如下:

lisi
wangwu
zhangsan
hanmeimei

说明长度最小的排在了前面。
如果要长度最大的排在前面,我们只需要修改MyCompare这个类的compare方法:

    @Override
    public int compare(Object o1, Object o2) {
        String a = (String)o1;
        String b = (String)o2;
        if (a.length() > b.length()){
            return -1;
        }else if (a.length() < b.length()){
            return 1;
        }
        return 0;
    }

泛型的概念

这里写图片描述
上面我们在进行数组自定义排序的时候,其实IDE对我们已经进行了一个提示。这是告诉我们传进去的数据类型应该是一个泛型。

我们把MyCompare类改造一下:

public class MyCompare implements Comparator <String> {
    @Override
    public int compare(String o1, String o2) {
        if (o1.length() > o1.length()){
            return -1;
        }else if (o1.length() < o2.length()){
            return 1;
        }
        return 0;
    }
}

这样要求传的就是String类型,我们就不必再转为String了。
在使用这个类对数组进行排序的时候,IDE也不会有”黄色”提示了。

// 排序
Arrays.sort(names, new MyCompare());

这里,我们只是初步接触泛型这个概念

java中的arrays.sort()代码详解 主要介绍了Java中的Arrays.sort()代码详解,涉及Arrays.sort()简单示例,策略模式,”super”的使用等相关内容,具有一定借鉴价值,需要的朋友可以参考下。 立即下载

相关推荐

【RandLA-Net实战】从零构建隧道点云数据集并训练大场景语义分割模型

本文详细介绍了如何使用RandLA-Net构建隧道点云数据集并进行大场景语义分割模型训练。从数据采集、标注到模型训练与优化,提供了完整的实战指南,特别针对隧道场景的特殊挑战提出了解决方案。通过实际案例展示了RandLA-Net在处理大场景点云数据时的高效性和准确性,为隧道巡检等工程应用提供了可靠的技术支持。

weixin_30485379的博客 113

Java数组排序:Arrays.sort()的使用和冒泡排序

Arrays.sort()给数组排序: //定义一个数组 int str[] = {1,85,16,9,89,69,4}; //1.Arrays.sort进行排序 从小到大排序 Arrays.sort(str); //增强for循环遍历,并打印 for (int i : str) { System.out.println(i); } 冒泡排序:将相邻的两个值进行比较,

qq_54410547的博客 631

Ubuntu20.04安装Eigen3.3.7、模板类Sophus和Ceres

Sophus的使用必须依赖3.3以上的Eigen版本。如果版本太低,Sophus库将无法安装使用。

qq_62964142的博客 3422

自定义数组的排序规则

import java.util.Arrays; import java.util.Comparator; public class Test { public static void main(String[] args) { Integer[] arr={1,2,3,4,5,6,7,8}; String stringNumber= Arrays.toString(arr); System.out.println(stringNumber);/.

weixin_66344432的博客 556

Android双目摄像头(RGB+IR)实时预览与人脸活体检测实战指南

本文详细介绍了Android双目摄像头(RGB+IR)实时预览与人脸活体检测的实战指南。通过双摄同步预览、人脸检测与活体判断等技术实现,提升安全认证的准确性和鲁棒性。文章还提供了开发环境搭建、常见问题解决方案及性能优化建议,帮助开发者快速掌握双目摄像头在Android平台的应用。

vulkan6gpu的博客 686

Windows11+VS2022驱动开发环境搭建实战:从零到编译(避坑指南)

本文详细介绍了在Windows11系统下使用VS2022搭建驱动开发环境的完整流程,包括版本匹配、工具安装、环境配置及常见问题解决。重点强调了WDK与系统版本的严格匹配,以及VS2022中驱动开发组件的正确配置方法,帮助开发者高效避坑并成功编译第一个驱动程序。

weixin_29251337的博客 526

【Java】对象数组按照某属性排序

一、将要排序的对象类实现< Comparable >接口。 要排序就要有比较的方法, 因为是自定义的类, 系统不知道怎么做两个自定义类的比较,所以我们要自己在类内写两个类的比较的方法,也就是告诉按照那个属性或者那种方式来给对象数组排序,自定义比较算法也就是实现Comparable接口:(会自动生成需要自己写的方法如下图) /** * 学生类 */ class Student implements Comparable<Student>{ String name;

SuperSources的博客 4308

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6240

Arrays.sort()详解

Arrays.sort()详解 一、 对基本数据类型数组的排序 1、int类型排序 int[] intArray = new int[]{1,34,5,-9}; Arrays.sort(intArray); System.out.println(Arrays.toString(intArray)); 2、 字符串String排序(默认从小到大,可定制排序) String[] strArray = new String[]{"Z", "a", "D"}; Arrays.sort(strArray); //

flyersboy的博客 8384

4、分布式发电系统中用于改善电能质量的有源、无源和混合滤波器

本文探讨了分布式发电系统中,尤其是光伏(PV)系统运行过程中引入的电能质量问题,并分析了有源滤波器、无源滤波器及混合滤波器在改善电能质量方面的应用。文章详细介绍了光伏系统的建模、最大功率点跟踪(MPPT)技术,以及谐波、电压波动等技术问题,同时对各类滤波器的拓扑结构和控制方法进行了系统性总结。通过仿真实例比较了不同滤波器在减少谐波方面的效果,为实际工程应用提供了参考依据。

transformer2023的博客 89

板蓝根挥发油微胶囊化技术及其在抗菌织物整理中的应用研究

微胶囊技术是一种通过成膜材料将具有反应活性或挥发性的液体或固体包封成微小颗粒的技术。该技术因其优异的缓释保护和物态改变性能,已在医药、食品、化妆品等多个领域得到广泛应用。本研究采用复凝聚法制备板蓝根挥发油的微胶囊,利用明胶和阿拉伯胶作为壁材,旨在提升其稳定性和抗菌性能。

qq_62634009的博客 584

自定义实现数组排序,万能排序函数

arr.sort() 排序,排序分为默认排序和自定义排序; 默认排序,该方法会调用每个数组项的toString()方法,然后按照字符序列排序 ; 自定义排序,该排序应该考虑分很多种,有纯数字排序,纯单个字母排序,多字母单词排序,按要求对数组内的对象进行排序等等。 排序除了数组项的要求以外还存在升序/降序的要求。 var arr = [3, 4, 1, 2, 11, 112, 89]; // var arr = ['tom','terry','fairy','ronda']; console.log('原.

m0_46364033的博客 2481

《Python星球日记》 第73天:情感分析与主题建模

《Python星球日记》 第73天:情感分析与主题建模,今天我们将探索两个自然语言处理领域的重要技术:情感分析和主题建模。这两项技术在社交媒体分析、用户反馈处理、市场研究等多个领域有着广泛应用。

Code_流苏:在代码中寻诗意,在实践中觅真知 918

C#泛型浅谈(浅~)自定义类型数组的排序

//1: //先定义2个属性存书名书编号,这里有2中属性的使用方式=-=  private int id; private string name; public int Id { get{return id ;} set { id = value; } } publi

sinat_16806817的博客 2221

Camera2Demo

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

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

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

通过排序总结java泛型数组列表

·java根据数组的自然顺序对基本数据类型和String类型的泛型数组(数组也可以,不过这里只介绍泛型数组)有很好的排序功能,如下添加4条字符串,然后通过对泛型数组列表进行相应的操作,分别按照升序和降序输出: import java.util.ArrayList; import java.util.Collections; public class Sort { public ...

agan112的博客 528

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java 数组 排序 泛型_Java 使用泛型为不同类型数组排序

java 使用泛型为不同类型数组排序之前想用Java写一个能够给不同数据类型排序的功能,于是我想到了C++中的泛型,Java同样也具有泛型的特性。但是,后来我发现在java中实现这个功能那个并不像c++中这么简单,java的泛型和c++还是有比较大的区别的。我遇到的最主要的一点问题就是:c++模板在编译时就会知道传入类型参数的类型是什么,从而可以很方便地限定传入参数类型,并可以在模板中使用传入类型...

weixin_34879325的博客 531

排序和比较:IComparable和IComparer,自己写泛型数组,索引器,

一、比较和排序 1、自己的写的类如果要实现sort方法,就必须实现IComparable里的CompareTo()方法 2、或者自己写一个IComparer的Compare比较器 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public clas

飞梦-飞翔的梦 479

善用泛型数组

为什么80%的码农都做不了架构师?>>> ...

weixin_34388207的博客 72

[转]:Delphi XE中泛型数组的使用范例

[转]:Delphi XE中泛型数组的使用范例 Delphi XE中泛型数组的使用范例,下面的范例简单的使用了泛型字符串数组,如用TArray代替arrayofWord,还可以使用TArray类提供的算法(就是少了点). uses Gener...

409

java 字符串数组排序_Java 使用泛型为不同类型数组排序

java 使用泛型为不同类型数组排序之前想用Java写一个能够给不同数据类型排序的功能,于是我想到了C++中的泛型,Java同样也具有泛型的特性。但是,后来我发现在java中实现这个功能那个并不像c++中这么简单,java的泛型和c++还是有比较大的区别的。我遇到的最主要的一点问题就是:c++模板在编译时就会知道传入类型参数的类型是什么,从而可以很方便地限定传入参数类型,并可以在模板中使用传入类型...

weixin_39960145的博客 134

泛型练习给任意对象数组排序

案例: 声明泛型方法,可以给任意对象数组按照元素的自然排序实现从小到大排序,用冒泡排序实现 @Test public void test01() { Integer[] arr1 = {1, 2, 8, 6, 14, 3, 64, 13}; String[] arr2 = {"a", "u", "c", "x", "v"}; sort(arr1); sort(arr2); System.out.println(Arra

desperado0726的博客 501

JAVA使用泛型

使用ArrayList时,如果不定义泛型类型时,泛型类型实际上就是Object此时,只能把<T>当作Object使用,没有发挥泛型的优势。当我们定义泛型类型<String>后,List<T>的泛型接口变为强类型当我们定义泛型类型<Number>后,List<T>的泛型接口变为强类型编译器如果能自动推断出泛型类型,就可以省略后面的泛型类型。编译器看到泛型类型就可以自动推断出后面的的泛型类型必须是。

m0_52064839的博客 158

(算法)排序—冒泡排序法Java实现

(算法)排序—冒泡排序法Java实现       对于冒泡排序法的理解思路不再过多解释,简单说就是多次循环遍历,把最大(小)值“沉到最底”以实现排序的效果。以下给出java程序:int数组排序:/** * 普通int数组从小到大排序 * @param arr */ public static void sort(int[] arr) { int length = arr.leng...

Sirm23333 1万+

泛型示例

原代码: 只对 int[] 进行排序,现增加需求对int[],byte[] ,char[] 及类中某些字段(price)等进行排序 public class SortHelper{ public void BubbleSort(int[] array) { int length = array.Length; for (int i = 0; i &lt;= length - 2; i+...

行云流水 715

day15 集合、迭代器与泛型_Exercises

随机验证码。代码实现,效果如图所示:开发提示: 第2题:学生对象 (1)定义学生类,属性为姓名,年龄,属性私有化,提供有参构造,get/set,重写toString。(2)在测试类中,创建ArrayList集合中。(3)从键盘录入学生信息,创建学生对象,保存到集合中。循环录入的方式,1:表示继续录入,0:表示结束录入。(4)使用foreach遍历输出。效果如图所示: 泛型 第3题:交换两个元素 (1)声明MyArrays工具类,包含泛型方法:public static void method( T[]

u010297404的博客 972

Java作业8-泛型和模板类

用泛型数组实现自定义堆栈类GenericStack,可处理任意类型数据。堆栈类中包含三个成员,一为泛型类型数组list,保存栈中元素,一为整型成员length表示数组的长度,一为整型成员count表示当前栈中元素个数。

计海无涯的博客 706
上一篇: PHP经典设计模式 - 依赖注入
下一篇: 数组排序:内部类
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值