`
chandler
  • 浏览: 81637 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一种字母排序方式

阅读更多

       这里我没有专注于排序算法,而是写了一个MyString类,实现了comparable的接口,然后用Arrays的sort方法来实现排序。我觉得这道题的难度在于如果比较两个。因为大小写的关系,实现起来有点复杂。

这是类一

       

  1. import java.util.Arrays;
  2. /*1.对字符串进行排序,用任意一种编程语言来实现,不能使用现有的类,在排序中,
  3. 字符串“Bc”,“Ad”,“aC”,“Hello”,“X man”,“little”,“During”,“day”
  4. 能够排序成 “Ad”,"aC",“Bc”,“During”,“day”,“Hello”,“little”,“Hello”,
  5. 也就是说,在排序的过程并不是传统的按照字符串排序,在排序中还需要将小写字母一并排序,
  6. 也就是说a字符串要在B或b之前。*/
  7. public class LetterSort {
  8.     public static void main(String[] args) {
  9.         // TODO Auto-generated method stub
  10.         String[] str = { "dad"
  11.                          "bOod",
  12.                          "bada","Admin","Good","aete","cc","Ko","Beta","Could"}; 
  13.         MyString[] strcompare = new MyString[str.length];
  14.         for(int i = 0;i<str.length;i++){
  15.             strcompare[i] = new MyString(str[i]);
  16.         }
  17.         Arrays.sort(strcompare);
  18.         for(MyString string:strcompare){
  19.             System.out.println(string);
  20.         }
  21.     }
  22. }

实现接口的MyString

  1. /*这个类是封装了一个String。实现Comparable接口。这样使得可以用Arrays的sort方法进行排序*/
  2. public class MyString implements Comparable<MyString> {
  3.     private String string;
  4.     
  5.     public void setString(String string) {
  6.         this.string = string;
  7.     }
  8.     public String getString() {
  9.         return string;
  10.     }
  11.     //构造方法
  12.     public MyString(String string){
  13.         this.string = string;
  14.     }
  15.     
  16.     
  17.     
  18.     //比较
  19.     public int compareTo(MyString other) {
  20.         // TODO Auto-generated method stub
  21.         char[] thisarr = this.string.toCharArray();        //存储被包装  字符串的字符数组
  22.         
  23.         char[] otherarr = other.getString().toCharArray(); //存储要比较的字符串的字符数组
  24.         
  25.         /*取得循环次数,为两个字符串的长度的最小值*/
  26.         int iterate = thisarr.length<otherarr.length?thisarr.length:otherarr.length;
  27.         
  28.         boolean mlowercase;                                 //记录被封装的字符串循环到的字符是否为小写
  29.         
  30.         boolean olowercase;                                 //记录要比较的字符串循环到的字符是否为小写                               
  31.         
  32.         char    thisletter;                                 //记录被封装的字符串循环到的字符
  33.         
  34.         char    otherletter;                                //记录要比较的字符串循环到的字符 
  35.         
  36.         /*字符串相等,则返回0*/
  37.         if(this.getString().equals(other.getString())){
  38.             return 0;
  39.         }
  40.         
  41.         /*循环字符串,做比较*/
  42.         for(int i=0;i<iterate;i++){
  43.             mlowercase = this.isLowercase(thisarr[i]);        
  44.             olowercase = this.isLowercase(otherarr[i]);
  45.             
  46.             /*把比较字符变成大写*/
  47.             thisletter = mlowercase?(char)(thisarr[i]-32):thisarr[i]; 
  48.             otherletter = olowercase?(char)(otherarr[i]-32):otherarr[i];
  49.             
  50.             /*比较*/
  51.             if(thisletter!=otherletter){               //比较字母大小,不相等,则取差值,字母小的在前面
  52.                 return (thisletter-otherletter);
  53.             }else{                                     //字母的大写形式相同
  54.                 if(mlowercase == olowercase){          //此位置大小写形式相同,判断下一个字符;
  55.                     continue;
  56.                 }else if(mlowercase){                  //被封装的字符为小写,则返回负值
  57.                     return 32;
  58.                 }else if(olowercase){                  //比较字符串的字符为小写,则返回正直
  59.                     return -32;
  60.                 }
  61.             }
  62.             
  63.         }
  64.         
  65.         /*如果循环好之后还分不出大小,则小的排在后面*/
  66.         return (thisarr.length<otherarr.length?-1:1);
  67.     }
  68.     
  69.     @Override
  70.     public String toString() {
  71.         // TODO Auto-generated method stub
  72.         return string;
  73.     }
  74.     //通过码值,来判断字符是否为小写字母
  75.     private boolean isLowercase(char ch){
  76.         if((int)ch >=97 && (int)ch<=122){
  77.             return true;
  78.         }else{
  79.             return false;
  80.         }
  81.     }
  82. }

 

分享到:
评论

相关推荐

    首字母排序选择

    "首字母排序选择"这个主题可能是指在微信小程序中实现的一种功能,即对数据进行首字母排序,以便用户可以更高效地查找和浏览信息。这在处理大量条目时尤其有用,例如在联系人列表、商品目录或任何需要分类检索的数据...

    易语言英文字母排序

    以下是实现英文字母排序的一种可能的方法: 1. 定义一个字符串变量,存储待排序的英文字母序列。 2. 使用易语言的“字符串分割”函数,将字符串分解成字符数组。 3. 应用冒泡排序或快速排序等算法对字符数组进行...

    按照字母排列——仿照微信联系人

    在XML布局文件中,你需要设计两种类型的列表项:一种是正常的联系人列表项,另一种是字母栏的列表项。在getView()方法中,根据数据类型返回不同的视图。 六、实现逻辑 1. 初始化ListView,并设置自定义Adapter。 2....

    按字母排序的ListView

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。本教程将深入讲解如何实现一个按字母排序的ListView,并提供快速定位到特定字母的功能。这一特性常见于通讯录应用,用户可以通过点击字母栏...

    用RecyclerView实现字母排序

    在这里,我们将利用它来创建一种视觉指示器,以显示每个字母的分隔符,使得用户可以快速定位到特定字母开头的条目。 1. **创建自定义ItemDecoration** 首先,我们需要创建一个类,实现`RecyclerView....

    sql 按拼音首字母排序

    标题“SQL按拼音首字母排序”以及描述中的关键词“SQL按拼音排序”,指向了一种特殊的数据排序需求:在数据库中,针对包含中文字符的字段,按照中文拼音的首字母进行排序。这在处理大量含有中文名称、地点等信息的...

    安卓A-Z字母排序索引相关-通讯录按首字母排列关键字查找.rar

    在安卓平台上,对通讯录进行A-Z字母排序索引是一种常见的功能实现,它方便用户快速查找和定位联系人。这个压缩包文件“安卓A-Z字母排序索引相关-通讯录按首字母排列关键字查找.rar”可能包含了一系列示例代码或教程...

    android实现ListView字母排序并调整字母位置

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。在某些应用场景中,我们可能需要为ListView添加字母索引功能,以便用户可以快速定位到特定的数据项。本篇文章将详细讲解如何在Android中实现...

    java中对单层json进行key字母排序

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。在某些场景下,我们可能需要按照JSON对象(JSONObject)中的键(key)的字母顺序来排列键值对,例如为了...

    字典序(Lexicographic Order)是一种按照字典中字母顺序排列的排序方式

    字典序(Lexicographic Order)...总的来说,字典序是一种强大的工具,它使得数据排序和查找变得有序且可预测,提高了算法的效率和实用性。在处理字符串和序列数据时,理解并熟练运用字典序是提升编程技能的重要一步。

    listview按字母排序

    "listview按字母排序"是指在ListView中对包含中文名称的item进行按首字母的字母顺序排列,并且通常还会提供一个字母索引栏,用户可以通过点击索引栏快速跳转到相应首字母的区域。下面将详细介绍如何实现这一功能。 ...

    用汇编语言写得字母排序

    - **MACRO宏定义**:程序开头使用了`AT2 MACRO`来定义了一个宏,这在汇编语言中是一种常见的代码复用方式。宏定义可以帮助简化重复的代码段,提高代码的可读性和可维护性。 - **寄存器操作**:汇编语言中的指令...

    android listView字母排列

    在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。当数据量大且包含各种不同的首字母时,为了提高用户体验,通常会实现字母索引功能,让用户能快速定位到所需内容。"android listView字母排列...

    首字母排序

    在IT行业中,首字母排序(Alphabetical Sorting)是一种常见的数据组织方法,特别是在处理列表或数组等数据结构时。这个概念简单易懂,即按照字母表的顺序对元素进行排列,从A到Z,或者在中文环境中,从“啊”到“ ...

    地名按字母排序

    这是基于ASCII码或Unicode编码的一种排序方式,通过比较字符串的第一个字符来决定顺序。在编程语言中,如Java、Python或C#,我们可以使用内置的排序函数或者自定义比较函数来实现这一功能。例如,Python的`sorted()`...

    html5仿手机通讯录按字母排序及搜索功能

    HTML5是一种强大的网页开发语言,它为创建交互性和富媒体的网页提供了许多新的特性。在本文中,我们将探讨如何利用HTML5实现一个仿手机通讯录的功能,包括按字母排序和搜索功能。 首先,我们需要理解HTML5的核心...

    手机通讯录按照字母排序点击找到联系人

    对于“手机通讯录按照字母排序点击找到联系人”这个功能,实现方式可能如下: 1. **数据结构**:首先,你需要一个包含所有联系人信息的数据结构,每个联系人对象至少包含姓名字段。在Vue实例中,可以将这些数据绑定...

    Android应用源码之带有拼音首字母排序的listview.zip

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。本示例源码“Android应用源码之带有拼音首字母排序的listview”着重于如何在ListView中实现基于拼音首字母的排序功能,这在中文应用中非常...

    类似通讯录 字母排序

    标题和描述中提到的“类似通讯录字母排序”是指在数据管理或应用界面设计中,常见的一种组织和检索数据的方法,类似于手机通讯录中的字母快速导航功能。这种功能允许用户按照字母顺序快速查找和访问姓名或其他标识符...

    按照字母顺序进行排序

    在IT领域,排序是一种基本且重要的操作,尤其在数据处理、数据库管理以及算法设计中扮演着核心角色。本文将深入探讨“按照字母顺序进行排序”的概念、应用和实现方法。 一、排序概述 排序,简单来说,就是将一组...

Global site tag (gtag.js) - Google Analytics