1 - “A”
5 - “E”
3 - “D”
2 - “B”
3 - “C”比如有以上两个数组,一个为数字数组(可排序),另一个为字符数组,它们一一对应,我想对数字数组进行排序后1,2,3,3,5,输出对应的字符数组A,B,C,D,E,我使用了Hashmap,但是输出时将数字数组中的第二个3对应的字符D输出为C,请教一下??
不知道用什么办法解决???

解决方案 »

  1.   

    建个类A实现Comparable接口(数字和字符作为实例字段),用数字实现该类的比较方法
    将两个数组的内容依次作为作为参数生成对象A的实例插入对象A的数组中,使用Arrays的sort方法进行比较。比较麻烦!不过可以实现!
      

  2.   

    这个函数位于java.util.Arrays
    public static void sort(char[] a)
    public static void sort(int [] a)
    也就是你可以直接用Arrays.sort(你的那些Array)
      

  3.   

    to binbin66(兜兜)
    好抽象哦,能再具体一点吗?
      

  4.   

    用TreeMap,把两个数组所对应的pair逐次添加,treemap会根据key,也就是楼主这里第一个数组的数字大小来进行排序的
      

  5.   

    原来楼主数组部分有重复值的啊,那可能只能以一楼的办法来了,
    自己写个类,两个域分别是两个数组的一对pair,实现comparable接口,定义compareto方法,按照第一个数组,也就是这里的int域进行比较就可以了,然后可以存在数组里,也可以存在容器里,分别用Arrays.sort和Collections.sort进行排序就好了
      

  6.   

    believefym(暮色,miss,迷失,miss)这种方法我用过,可以实现搂主要的结果
    你把要查找的数组要先进行排序,后用Arrays.binarySearch会返回你所要的数组下标
      

  7.   

    问题是楼主的第一个数组有重复值的,map可能不太行吧
      

  8.   

    实现comparable接口,
    先用1,2,3,4,5...排序
    如果相同,则用a,b,c,d,e...排序
      

  9.   

    给个例子:常常遇到数组排序的问题.比如我有一个Person类,它的实例对象存储在ArrayList数组中,现在要把ArrayList数组中的Person对象按照年龄排序.
    其实这种情况经常遇到.
    下面给出源代码:1:Person.java文件:-------------------------------
    public class Person{
     String name;
     int age;
     
     public Person(String name,int age){
      this.name = name;
      this.age = age;
      
     } public int getAge() {
      return age;
     } public void setAge(int age) {
      this.age = age;
     } public String getName() {
      return name;
     } public void setName(String name) {
      this.name = name;
     }}
    2:Mycomparator.java-------------------------------
    //实现Comparator接口,也就是定义排序规则,你几乎可以定义任何规则
    package com.infoearth;
    import java.util.*;
    public class Mycomparator implements Comparator{ public int compare(Object o1,Object o2) {
      Person p1=(Person)o1;
      Person p2=(Person)o2;  
      if(p1.age<p2.age)
       return 1;
      else
       return 0;
     }}3:ListSort.java------------------------------------package com.infoearth;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;public class ListSort {
     public static void main(String[] args){
      ArrayList list = new ArrayList();
      list.add(new Person("lcl",28));
      list.add(new Person("fx",23));
      list.add(new Person("wqx",29));
      Comparator comp = new Mycomparator();
      Collections.sort(list,comp);  
      for(int i = 0;i<list.size();i++){
       Person p = (Person)list.get(i);
       System.out.println(p.getName());
      }  
      
     }}
      

  10.   

    在Mycomparator中,你重新实现一下 compare方法就可以了
      

  11.   

    List numList=new ArrayList();
    numList.addAll(Arrays.asList(new Object[]{new Integer(3),new Integer(3),new Integer(5),new Integer(4)}));
    List valueList=new ArrayList();
    valueList.addAll(Arrays.asList(new Object[]{"A","B","C","D"}));
    // build a HashMap to maintain the relationship;
    用IdentityHashMap就可以了  
    Map map=new IdentityHashMap();
    for(int i=0;i<numList.size();i++){
       map.put(numList.get(i),valueList.get(i));
    }
    // sort the numList
    Collections.sort(numList);
    // output the value sorted by key.
    for(int i=0;i<numList.size();i++){
       System.out.println(map.get(numList.get(i)));
    }
      

  12.   

    如果需要重新定义一个类,势必非常麻烦!
    利用TreeMap也是行不通的,如果Comparator和equals不符合,处理起来就有错误!
      

  13.   

    谢谢大家的答复,已经按照lcllcl987的示例完成了排序输出
      

  14.   

    建个类A实现Comparable接口(数字和字符作为实例字段),用数字实现该类的比较方法
    将两个数组的内容依次作为作为参数生成对象A的实例插入对象A的数组中,使用Arrays的sort方法进行比较。
    import java.util.*;
    public class ListStor{
             public static void main(String args[])
    {
    Employee [] staff=new Employee[5];
    staff[0]=new Employee(1,"A");
    staff[1]=new Employee(5,"E");
    staff[2]=new Employee(4,"D");
    staff[3]=new Employee(2,"B");
    staff[4]=new Employee(3,"C");
    Arrays.sort(staff);
    for(int i=0;i<staff.length;i++)
    {
    Employee e=staff[i];
    System.out.println((int)e.getNum()+"-"+e.getStr());
    }
    }
    }class Employee implements Comparable
    {
    Employee(int n,String s)
    {
    num=n;
    str=s;
    }

    public double getNum()
    {
    return num;
    }
    public String getStr()
    {
    return str;
    }
    public int compareTo(Object otherObject)
    {
    Employee other=(Employee)otherObject;
    if(num>other.num) return 1;
    else return 0;
    }
    private String str;
    private double num;
    }