广告
返回顶部
首页 > 资讯 > 精选 >Java集合框架和数组的排序是什么
  • 329
分享到

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

2023-06-17 10:06:58 329人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Java集合框架和数组的排序是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。根据约定,在使用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集合框架和数组的排序是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Java集合框架和数组的排序是什么

本文链接: https://www.lsjlt.com/news/288385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Java集合框架和数组的排序是什么
    这篇文章将为大家详细讲解有关Java集合框架和数组的排序是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一...
    99+
    2023-06-17
  • Java集合框架是什么
    这篇文章主要介绍了Java集合框架是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介1、集合框架介绍Java集合框架提供了一套性能优良,使用方便的接口和类,他们位于...
    99+
    2023-06-29
  • Java集合框架由什么组成的
    这篇文章主要为大家展示了“Java集合框架由什么组成的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java集合框架由什么组成的”这篇文章吧。第一部分  集合框架介绍Java平台提供了...
    99+
    2023-06-03
  • Java集合框架的数据结构是什么
    这篇文章主要介绍“Java集合框架的数据结构是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java集合框架的数据结构是什么”文章能帮助大家解决问题。1、什么是集合框架?在java中,有一套现成...
    99+
    2023-06-29
  • java 数组和集合的区别是什么
    java 数组和集合的区别:数组可以储存基本数据类型和对象,而集合中只能储存对象(可以以包装类形式存储基本数据类型)。数组的长度是固定的,集合长度是可以改变的。定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object。无法直接获...
    99+
    2017-09-25
    java教程 java 数组 集合 区别
  • Java中的集合框架:理解Java中的数据结构和集合
    文章目录 Java中的集合框架:理解Java中的数据结构和集合1. 引言2. 技术原理及概念2.1 基本概念解释2.2 技术原理介绍 3. 实现步骤与流程3.1 准备工作:环境配置与依赖...
    99+
    2023-10-04
    数据结构 java 链表
  • java中数组和集合的区别是什么?
    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元...
    99+
    2020-10-03
    java教程 java 数组 集合
  • java中集合和数组的区别是什么
    本篇文章为大家展示了java中集合和数组的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开...
    99+
    2023-06-14
  • Java集合的总体框架有什么用
    这篇文章将为大家详细讲解有关Java集合的总体框架有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、集合概述数组其实就是一个集合。集合实际上就是一个容器。可以来容纳其它的数据。二、集合在开发中的应...
    99+
    2023-06-15
  • java中的集合框架有什么作用
    本篇内容介绍了“java中的集合框架有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!集合框架是为表示和操作集合而规定的一种统一的标准...
    99+
    2023-06-17
  • java集合与数组的区别是什么?
    数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报Runti...
    99+
    2020-05-15
    java基础 java 集合 数组
  • java对数组降序排序的方法是什么
    Java中对数组降序排序的方法有多种,以下是两种常用的方法:1. 使用Arrays类的sort方法,并传入一个Comparator对象来指定降序排序的规则。```javaimport java.util.Arrays;import ja...
    99+
    2023-08-11
    java
  • java二维数组排序的方法是什么
    Java中可以使用Arrays类的sort方法对二维数组进行排序。具体步骤如下:1. 导入java.util.Arrays类。```...
    99+
    2023-10-10
    java
  • php中数组是一组什么的集合
    php中数组是一组有序数据的集合,数组中的每个成员被称为元素,每个元素由一个特殊的标识符来区分,该标识符称为键名(或下标)。PHP数组根据键名的不同,可分为两种:1、以数字作为键名的索引数组;2、以字符串或字符串、数字混合为键名的关联数组。...
    99+
    2022-06-14
    php php数组
  • Java springboot整合Shiro框架的方法是什么
    本篇内容主要讲解“Java springboot整合Shiro框架的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java springboot整合Shiro框架的...
    99+
    2023-06-26
  • 带你轻松搞定Java面向对象的编程--数组,集合框架
    目录一、数组1.数组的定义2.数组的声明 3.数组的初始化二、集合概述三、Collection接口1.Collection接口概述2.集合框架的三个组件3.Iterator...
    99+
    2022-11-12
  • php数组逆向排序的函数是什么
    这篇文章主要讲解了“php数组逆向排序的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php数组逆向排序的函数是什么”吧!php数组逆向排序是“array_reverse...
    99+
    2023-07-02
  • Java中接口和数组的运用:Spring框架的实现方式是什么?
    在Java编程中,接口和数组是两种非常重要的概念。其中,接口是一种定义了方法和常量的抽象类型,而数组则是一种可以存储多个相同数据类型的容器。在实际的编程中,这两个概念经常被用来设计和实现各种复杂的程序。在本文中,我们将重点讨论Spring...
    99+
    2023-08-09
    接口 spring 数组
  • python多维数组排序的方法是什么
    Python中可以使用NumPy库来对多维数组进行排序。NumPy中的sort函数可以按照指定的轴对数组进行排序。以下是一个示例:`...
    99+
    2023-10-12
    python
  • php数组随机排序的方法是什么
    PHP中可以使用shuffle()函数来随机排序数组。示例代码:```php$myArray = array(1, 2, 3, 4,...
    99+
    2023-08-15
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作