我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java集合框架和数组的排序是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java集合框架和数组的排序是什么

这篇文章将为大家详细讲解有关Java集合框架和数组的排序是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还要好呢?使用现有的类的另一个好处是代码易于阅读和维护,主要讲的是如何使用现有的类库对数组和各种Collection容器进行排序

首先要知道两个类:java.util.Arrays和java.util.Collections(注意和Collection的区 别)Collection是集合框架的顶层接口,而Collections是包含了许多静态方法。我们使用Arrays对数组进行排序,使用 Collections对结合框架容器进行排序,如ArraysList,LinkedList等。


对数组进行排序

比如有一个整型数组:

int[] intArray = new int[] {4, 1, 3, -23};

我们如何进行排序呢?你这个时候是否在想快速排序的算法?看看下面的实现方法:

import java.util.*;  public class Sort{      public static void main(String[] args){          int[] intArray = new int[] {4, 1, 3, -23};          Arrays.sort(intArray);      }  }

这样我们就用Arrays的静态方法sort()对intArray进行了升序排序,现在数组已经变成了{-23,1,3,4}.

如果是字符数组:

String[] strArray = new String[] {"z", "a", "C"};

我们用:

Arrays.sort(strArray);

进行排序后的结果是{C,a,z},sort()会根据元素的自然顺序进行升序排序。如果希望对大小写不敏感的话可以这样写:

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

当然我们也可以指定数组的某一段进行排序比如我们要对数组下表0-2的部分(假设数组长度大于3)进行排序,其他部分保持不变,我们可以使用:

Arrays.sort(strArray,0,2);

这样,我们只对前三个元素进行了排序,而不会影响到后面的部分。

当然有人会想,我怎样进行降序排序?在众多的sort方法中有一个

sort(T[] a, Comparator<? super T> c)

我们使用Comparator获取一个反序的比较器即可,Comparator会在稍后讲解,以前面的intArray[]为例:

Arrays.sort(intArray,Comparator.reverseOrder());

这样,我们得到的结果就是{4,3,1,-23}。如果不想修改原有代码我们也可以使用:

Collections.reverse(Arrays.asList(intArray));

得到该数组的反序。结果同样为4,3,1,-23}。

现在的情况变了,我们的数组里不再是基本数据类型(primtive type)或者String类型的数组,而是对象数组。这个数组的自然顺序是未知的,因此我们需要为该类实现Comparable接口,比如我们有一个Name类:

class Name implements Comparable<Name>{      public String firstName,lastName;      public Name(String firstName,String lastName){          this.firstName=firstName;          this.lastName=lastName;      }      public int compareTo(Name o) {          //实现接口          int lastCmp=lastName.compareTo(o.lastName);          return (lastCmp!=0?lastCmp:firstName.compareTo(o.firstName));      }          public String toString(){                //便于输出测试          return firstName+" "+lastName;      }  }

这样,当我们对这个对象数组进行排序时,就会先比较lastName,然后比较firstName 然后得出两个对象的先后顺序,就像compareTo(Name o)里实现的那样。不妨用程序试一试:

 import java.util.*;   public class NameSort {       public static void main(String[] args) {           Name nameArray[] = {              new Name("John", "Lennon"),              new Name("Karl", "Marx"),              new Name("Groucho", "Marx"),              new Name("Oscar", "Grouch")          };[page]          Arrays.sort(nameArray);          for(int i=0;i<nameArray.length;i++){              System.out.println(nameArray[i].toString());          }      }  }

结果正如我们所愿:

Oscar Grouch  John Lennon  Groucho Marx  Karl Marx

对集合框架进行排序

如果已经理解了Arrays.sort()对数组进行排序的话,集合框架的使用也是大同小异。只是将Arrays替换成了Collections,注意Collections是一个类而Collection是一个接口,虽然只差一个"s"但是它们的含义却完全不同。

假如有这样一个链表:

LinkedList list=new LinkedList();  list.add(4);  list.add(34);  list.add(22);  list.add(2);

我们只需要使用:

Collections.sort(list);

就可以将ll里的元素按从小到大的顺序进行排序,结果就成了:

[2, 4, 22, 34]

如果LinkedList里面的元素是String,同样会想基本数据类型一样从小到大排序。

如果要实现反序排序也就是从达到小排序:

Collections.sort(list,Collectons.reverseOrder());

如果LinkedList里面的元素是自定义的对象,可以像上面的Name对象一样实现Comparable接口,就可以让Collection.sort()为您排序了。

如果你想按照自己的想法对一个对象进行排序,你可以使用

sort(List<T> list, Comparator<? super T> c)

这个方法进行排序,在给出例子之前,先要说明一下Comparator的使用,Comparable接口的格式:

public interface Comparator<T> {      int compare(T o1, T o2);  }

其实Comparator里的int compare(T o1,T o2)的写法和Comparable里的compareTo()方法的写法差不多。在上面的Name类中我们的比较是从LastName开始的,这是西方 人的习惯,到了中国,我们想从fristName开始比较,又不想修改原来的代码,这个时候,Comparator就可以派上用场了:

final Comparator<Name> FIRST_NAME_ORDER=new Comparator<Name>() {      public int compare(Name n1, Name n2) {           int firstCmp=n1.firstName.compareTo(n2.firstName);           return (firstCmp!=0?firstCmp:n1.lastName.compareTo                    (n2.firstName));      }  };

这样一个我们自定义的Comparator FIRST_NAME_ORDER就写好了。

将上个例子里那个名字数组转化为List:

List<Name> list=Arrays.asList(nameArray);  Collections.sort(list,FIRST_NAME_ORDER);

这样我们就成功的使用自己定义的比较器设定排序。

关于Java集合框架和数组的排序是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java集合框架和数组的排序是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java集合框架和数组的排序是什么

这篇文章将为大家详细讲解有关Java集合框架和数组的排序是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一
2023-06-17

Java集合框架是什么

这篇文章主要介绍了Java集合框架是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介1、集合框架介绍Java集合框架提供了一套性能优良,使用方便的接口和类,他们位于
2023-06-29

Java集合框架由什么组成的

这篇文章主要为大家展示了“Java集合框架由什么组成的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java集合框架由什么组成的”这篇文章吧。第一部分 集合框架介绍Java平台提供了一个全新的
2023-06-03

Java集合框架的数据结构是什么

这篇文章主要介绍“Java集合框架的数据结构是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java集合框架的数据结构是什么”文章能帮助大家解决问题。1、什么是集合框架?在java中,有一套现成
2023-06-29

java 数组和集合的区别是什么

java 数组和集合的区别:1、数组可以储存基本数据类型和对象,而集合中只能储存对象(可以以包装类形式存储基本数据类型)。2、数组的长度是固定的,集合长度是可以改变的。3、定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object。4、无法直接获取数
java 数组和集合的区别是什么
2017-09-25

java中集合和数组的区别是什么

本篇文章为大家展示了java中集合和数组的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开
2023-06-14

java中数组和集合的区别是什么?

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不
java中数组和集合的区别是什么?
2020-10-03

Java集合的总体框架有什么用

这篇文章将为大家详细讲解有关Java集合的总体框架有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、集合概述数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。二、集合在开发中的应
2023-06-15

java中的集合框架有什么作用

本篇内容介绍了“java中的集合框架有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!集合框架是为表示和操作集合而规定的一种统一的标准
2023-06-17

java集合与数组的区别是什么?

数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeExceptio
java集合与数组的区别是什么?
2020-05-15

java对数组降序排序的方法是什么

Java中对数组降序排序的方法有多种,以下是两种常用的方法:1. 使用Arrays类的sort方法,并传入一个Comparator对象来指定降序排序的规则。```javaimport java.util.Arrays;import java
2023-08-11

java二维数组排序的方法是什么

Java中可以使用Arrays类的sort方法对二维数组进行排序。具体步骤如下:1. 导入java.util.Arrays类。```javaimport java.util.Arrays;```2. 定义一个二维数组。```javaint[
2023-10-10

php中数组是一组什么的集合

php中数组是一组有序数据的集合,数组中的每个成员被称为元素,每个元素由一个特殊的标识符来区分,该标识符称为键名(或下标)。PHP数组根据键名的不同,可分为两种:1、以数字作为键名的索引数组;2、以字符串或字符串、数字混合为键名的关联数组。本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑php中数组是一组有序数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组中的每个
2022-06-14

sql数组排序的方法是什么

在 SQL 中,对数组进行排序通常使用 ORDER BY 子句。以下是一个简单的示例:SELECT column_nameFROM table_nameORDER BY column_name;在上面的示例中,ORDER BY 子句用
sql数组排序的方法是什么
2024-04-09

Java springboot整合Shiro框架的方法是什么

本篇内容主要讲解“Java springboot整合Shiro框架的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java springboot整合Shiro框架的方法是什么”吧!Sh
2023-06-26

php数组逆向排序的函数是什么

这篇文章主要讲解了“php数组逆向排序的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php数组逆向排序的函数是什么”吧!php数组逆向排序是“array_reverse()”函数
2023-07-02

Java的IO模型和Netty框架是什么

这篇文章主要介绍“Java的IO模型和Netty框架是什么”,在日常操作中,相信很多人在Java的IO模型和Netty框架是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的IO模型和Netty框架
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录