java-中文怎么排序,这是个面试题求解答

问题描述

中文怎么排序,这是个面试题求解答

怎么给“张三”,“李一”,“王五”排序,排序后为“李一”,“张三”、“王五”

解决方案

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class MyTest {
private static Map map = new HashMap();
public static void main(String[] args) {
map.put("零", 0);
map.put("一", 1);
map.put("二", 2);
map.put("三", 3);
map.put("四", 4);
map.put("五", 5);
map.put("六", 6);
map.put("七", 7);
map.put("八", 8);
map.put("九", 9);

    List<String> list = new ArrayList<String>();
    list.add("赵六");
    list.add("李四");
    list.add("张三");

    Collections.sort(list, new Comparator<String>(){

        @Override
        public int compare(String o1, String o2) {
            int v1 = map.get(o1.substring(1));
            int v2 = map.get(o2.substring(1));

            return v1 - v2;
        }

    });

    System.out.println(list);
}

}

解决方案二:

为什么排序后不是“李一”“王五”“张三”?

解决方案三:

排序时截取一下字符串,只要最后一个汉字就可以了

解决方案四:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class MyTest {
    private static Map<String, Integer> map = new HashMap<String, Integer>();
    public static void main(String[] args) {
        map.put("零", 0);
        map.put("一", 1);
        map.put("二", 2);
        map.put("三", 3);
        map.put("四", 4);
        map.put("五", 5);
        map.put("六", 6);
        map.put("七", 7);
        map.put("八", 8);
        map.put("九", 9);

        List<String> list = new ArrayList<String>();
        list.add("赵六");
        list.add("李四");
        list.add("张三");

        Collections.sort(list, new Comparator<String>(){

            @Override
            public int compare(String o1, String o2) {
                int v1 = map.get(o1.substring(1));
                int v2 = map.get(o2.substring(1));

                return v1 - v2;
            }

        });

        System.out.println(list);
    }

}

解决方案五:

这个就需要根据ascii码来映射到26个字母,然后根据字母排序了

解决方案六:

单纯回答你的问题的话,看题目的意思应该是去掉姓氏按照名字来排序的,一<三<五

时间: 2024-12-24 02:05:32

java-中文怎么排序,这是个面试题求解答的相关文章

java基础高手看这里了,这几道基础性的面试题求解答。

问题描述 java基础高手看这里了,这几道基础性的面试题求解答. 同学出去应聘,笔试的时候遇到这几道基础题不会做,拿给我看,发现自己也不怎么会,java基础好多都有些忘了,来帮忙解答一下吧. 1.实现一个函数,函数有一个形参,类型为整数,功能是将形参的十进制数的二进制序列打印到控制台上. 2.实现一个函数,函数有一个形参,类型为集合,功能是将集合中的内容按照每行3个输出(写出两种以上方法). 3.有数据表,字段定义为如下: 客户 商品 报价 报价日期 表中存放着不同客户,不同商品,不同日期的报价

c++-初级 C++ 学习者来求教,编程中排序题目遇到的问题,求解答

问题描述 初级 C++ 学习者来求教,编程中排序题目遇到的问题,求解答 题目是用选择法对10个整数进行由小到大排序. 我的编程是: #include using namespace std; int main() { void select_sort(int array[], int n); int a[10], i; cout << "输入原始数组:" << endl; for (i = 0; i < 10; i++) cin >> a[i]

java类的问题-java基础高手看这里了,这几道基础性的面试题求解答。

问题描述 java基础高手看这里了,这几道基础性的面试题求解答. 编制父类Shape:包括普通成员变量图形的行数.列数:图形开始绘制的列数:静态变量图形个数:以及方法绘制图形: 编写两个子类:菱形和矩形,这两个子类继承父类中的绘制图形方法,即在控制台中输出菱形或矩形(根据构造函数中给出的行.列): 验证上述要求,使得屏幕上显示多个图形,并且输出图形的个数. 解决方案 你应该先贴出你的代码,有问题的话大家讨论,直接让人做题不好吧. 解决方案二: abstract class Shape { pub

Java协程框架kilim碰到的问题,求解答,万分感谢!

问题描述 Java协程框架kilim碰到的问题,求解答,万分感谢! 最近看到kilim框架提供的java的协程功能,便想运行一下,但是每次都报错,运行不起来. 报错如下图: 查看的文档和链接是http://blog.csdn.net/chenyi8888/article/details/7047099 求各位帮忙解答一下这个报错,或者有什么解决方案,万分感谢了! 解决方案 Java协程框架--Kilim常见问题解答

java基础高手看这里了,这道基础性的试题求解答

问题描述 java基础高手看这里了,这道基础性的试题求解答 编制父类Shape:包括普通成员变量图形的行数.列数:图形开始绘制的列数:静态变量图形个数:以及方法绘制图形: 编写两个子类:菱形和矩形,这两个子类继承父类中的绘制图形方法,即在控制台中输出菱形或矩形(根据构造函数中给出的行.列): 验证上述要求,使得屏幕上显示多个图形,并且输出图形的个数. 解决方案 class Shape { public int rows; public int columns; public int maginc

Java中文进行排序

import java.text.Collator;import java.util.Arrays;import java.util.Comparator; /*** @author leon* 所谓中文排序就是按照汉语拼音的顺序进行排序,* 在Java中进行排序其实不需要自己来写算法,* java.util.Arrays类中提供的sort方法可以直接实现这个功能.*/public class SortByChinese {         public static void main(Str

关于Java中文问题的几条分析原则

问题|中文   引言 尽管对于Java中文处理问题的讨论已不乏其数,但由于Java技术涉及内容广(J2EE包含了十几种相关技术),技术供应商繁多,面向Java的Web服务器.应用服务器以及JDBC数据库驱动等都没有官方的标准,所以Java应用在处理中文过程中出了存在固有的问题外也存在随着选用的服务器,驱动程序的不同而带来的Java中文问题的多变性,增加了问题的复杂度.那么,我们如何在这么纷繁的现象中找到问题的症结呢? Java中文问题的一般解决办法 事实上,Java的中文问题都是由于Java应用

Java中文问题及最优解决方法

解决|问题|中文 1.中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理.随着计算机的发展,为了适应世界其它民族的语言(当然包括我们的汉字),人们提出了UNICODE编码,它采用双字节编码,兼容英文字符和其它民族的双字节字符编码,所以,目前,大多数国际性的软件内部均采用UNICODE编码,在软件运行时,它获得本地支持系统(多数时间是操作系统)默认支持的编码格式,然后再将软件内部的UNICODE转化为本地系统默认支持

java中文解决大全(下)

解决|中文 4.中文问题的分类及其建议最优解决办法     了解以上JAVA处理文件的原理之后,我们就可以提出了一套建议最优的解决汉字问题的办法.    我们的目标是:我们在中文系统中编辑的含有中文字符串或进行中文处理的JAVA源程序经编译后可以移值到任何其它的操作系统中正确运行,或拿到其它操作系统中编译后能正确运行,能正确地传递中文和英文参数,能正确地和数据库交流中英文字符串.    我们的具体思路是:在JAVA程序转码的入口和出口及JAVA程序同用户有输入输出转换的地方限制编码方法使之正确即