admin管理员组

文章数量:1794759

Java中String数组的排序

Java中String数组的排序

使用Java compareToIgnoreCase 方法排序

这个方法我在上一篇文章已经说过如何使用了,也说明了它的原理 我们可以看一看:点击查看blog.janyork/index.php/archives/421/

为了更加详细的讲解这个方法在数组中的使用,我们来讲解一下这个示例

示例 

我们用一个String数组来储存4首歌曲的名字,然后从控制台输入一首歌,并且将它插入到数组里面,并且排序5首歌曲

直接看代码:

数组歌曲排序

import java.util.Scanner; public class HgDome { public static void main(String[] args) { //变量跟数组关于初始值问题 String[] musics = new String[]{"Island","Ocean","Pretty","Sun"}; String[] newMusics = new String[musics.length+1]; //新歌曲数组 String music; //保存用户输入的歌曲名称 int index = musics.length; //保存新歌插入位置 //输出插入前的结果 System.out.print("插入前的数组为:"); for(int i = 0; i < musics.length ; i++){ System.out.print(musics[i]+" "); } //将数组musics中的元素复制到新歌曲数组newMusics中 for(int i = 0; i < musics.length; i++){ newMusics[i] = musics[i]; } //输入歌曲名称 Scanner input = new Scanner(System.in); System.out.print("\\n请输入歌曲名称:"); music = input.nextLine(); //找到新元素的插入位置 for(int i = 0; i < musics.length; i++){ if(musics[i]pareToIgnoreCase(music) > 0){ index = i; break; } } //元素后移 for(int i = newMusics.length-1; i > index; i--){ newMusics[i] = newMusics[i-1]; //index下标开始的元素后移一个位置 } newMusics[index] = music; //新元素放在index的位置 //输出插入后的结果 System.out.print("插入后的数组为:"); for(int i = 0; i < newMusics.length; i++){ System.out.print(newMusics[i]+" "); } } } 我们来看看效果 

 

 

 分析

先看看我们开始 我们定义了两个数组!

String[] musics = new String[]{"Island","Ocean","Pretty","Sun"};

这是第一个数组,它的作用是储存4个歌曲的名称,这是一个静态(不可改变)的数组值,无法扩充它的储存空间,所以我们需要再定义一个动态数组空间 定义一个动态数组:

String[] newMusics = new String[musics.length+1];

这个数组的长度是 [musics.length+1] ,数组名+length 是获取数组的长度,我们的第二个数组里面需要多一个空间来保存插入的数值,所以需要原来的musics这个数组的长度 +1

好了,我们已经将两个数组定义好了

定义变量

下一步,我们定义一个空值,来保存要插入的歌名

String music;

然后我们用定义一个int数值,来储存要插入歌曲插入的位置(下标)

int index = musics.length; 输出之前数组

我们输出一次没插入歌曲前的数组

System.out.print("插入前的数组为:"); for(int i = 0; i < musics.length ; i++){ System.out.print(musics[i]+" "); }

我们的静态数组是不可扩充的,我们利用循环来将原来的数组 musics[] 搬运到 newMusics[] ,因为原来的数组只有4个String值,而我们新的数组有5个空间,将数组搬运到新数组后我们就空余一个空间,用于放插入空间

//将数组musics中的元素复制到新歌曲数组newMusics中 for(int i = 0; i < musics.length; i++){ newMusics[i] = musics[i]; } 输入要插入的歌名

现在,很多人觉得我们应该要将歌名插入数组了,可是,歌名从哪来?

这里就应该要用到Scanner了,让用户从控制台输入一个歌名

//输入歌曲名称 Scanner input = new Scanner(System.in); System.out.print("\\n请输入歌曲名称:"); music = input.nextLine(); 找到插入位置

找到插入位置与数组中的插入字符原理一样,不懂可以看看这一篇文章:

跳转链接:Java中如何在数组中插入一个字符 - 小简博客 (janyork)blog.janyork/index.php/archives/414/

我们先前定义了一个 index 来储存插入位置,我们用循环将位置(下标)找到并赋值给index

//找到新元素的插入位置 for(int i = 0; i < musics.length; i++){ if(musics[i]pareToIgnoreCase(music) > 0){ index = i; break; } }

利用这个方法比较String值,找出要插入的位置的下标

数组值后移

找到插入的位置后,此时,这个位置是存在可用数值的,我们在插入字符串前,需要将插入位置(index)后面的数后移

//元素后移 for(int i = newMusics.length-1; i > index; i--){ newMusics[i] = newMusics[i-1]; //index下标开始的元素后移一个位置 }

这里这个(int i = newMusics.length-1)是什么,可能许多人有疑问,这个就是 数组长短-1 ,也就是数组下标长度,我们从最后一个下标开始,index(插入位置)后面的数组值都往后移动一个空间,给要插入的歌曲腾出一个位置

好了,此时就可以说是万事俱备只欠东风了

插入字符串

现在,我们将空出的位置赋值

将music(要插入的音乐)赋值个数组中的index下标(数组空出位置)

newMusics[index] = music; 重新输出数组 System.out.print("插入后的数组为:"); for(int i = 0; i < newMusics.length; i++){ System.out.print(newMusics[i]+" "); }

如果还是有不懂,可以自己结合代码,运行分析,或者联系我,还有其他字符串排序方法,我单独一篇文章总结

本文标签: 数组javaString