编程题:
      
      员工      工资
      张三 2000
      李四 2500
      王二 2000
      .... ....
      .... ....
      用JAVA代码输出工资相等的(忽略名字相等,算法效率越高越好)。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-19 12:14:41的汇总数据:
    注册日期:2006-4-28
    上次登录:2008-6-19
    发帖数:1
    结贴数:0
    结贴率: 0.00%
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    HashMap
    key: 分数
    value:名字;名字;名字遍历
    输出
      

  3.   

    弄个HashMap,工资为key,名字为valueObject 名字集合 = map.get(工资)if(名字集合 == null)
    {
    List list = new ArrayList();
    list.add(名字);
    map.put(工资,list);
    }
    else
    {
    List list = (List)名字集合;
    list.add(名字);
    map.put(工资,list);
    }最后遍历map,value长度大于1的就是相同工资的
      

  4.   


    import java.util.*;class Salary {
    private String name = "";
    private int salary = 0;
    public Salary() { }
    public Salary(String name, int salary) {
    this.name = name;
    this.salary = salary;
    }
    public String getName() {return this.name;}
    public void setName(String name) {this.name = name;}
    public int getSalary() {return this.salary;}
    public void setSalary(int salary) {this.salary = salary;}
    public String toString() {return this.name + "\t" + this.salary;}
    }public class Finder { public static void main(String[] args) {
    Salary[] ss = {
    new Salary("张三", 2000),
    new Salary("李四", 2500),
    new Salary("王二", 2000),
    new Salary("张三", 2000)
    };
    System.out.println("员工\t工资");
    for (Salary s : ss) System.out.println(s);
    System.out.println("---------------------");
    Map<Integer, HashSet<String>> map = new HashMap<Integer, HashSet<String>>();
    for (Salary s : ss) {
    if (map.containsKey(s.getSalary())) {
    map.get(s.getSalary()).add(s.getName());
    } else {
    HashSet<String> ths = new HashSet<String>();
    ths.add(s.getName());
    map.put(s.getSalary(), ths);
    }
    }
    Set<Integer> set = map.keySet();
    for (Integer s : set) {
    System.out.println(s);
    Set<String> ns = map.get(s);
    for (String n : ns) {
    System.out.println("\t" + n);
    }
    }

    }}
      

  5.   

    靠!折腾了我这么久,贴出来参考下: 
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Comparator;class Item {
        private String name;
        private int salary;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getSalary() {
            return salary;
        }
        public void setSalary(int salary) {
            this.salary = salary;
        }
    }
    class MyComparator implements Comparator {    public int compare(Object o1, Object o2) {
            Item c1=(Item)o1;
            Item c2=(Item)o2;
            if (c1.getSalary() >c2.getSalary()) {
                return 1;
            } else if (c1.getSalary() == c2.getSalary()) {
                    return 0;
            } else {
                    return -1;
            }
        }
    }
    public class Person{
        public static void main(String[] args){
            List<Item> list=new ArrayList<Item>();
            for(int i=0;i<10;i++){
                Item p=new Item();
                p.setName("n"+i);
                p.setSalary(i%7);
                list.add(p);
            }
            System.out.println("----------排序前---------");
            System.out.println("    name          salary");
            for(int i=0;i<list.size();i++){
                System.out.println("    "+list.get(i).getName()+"            "+list.get(i).getSalary());    
            }        MyComparator mc=new MyComparator();
            Collections.sort(list,mc);
            
            System.out.println("----------排序后---------");
            System.out.println("    name          salary");
            for(int i=0;i<list.size();i++){
                System.out.println("    "+list.get(i).getName()+"            "+list.get(i).getSalary());    
            }
            for(int i=0;i<list.size();){
                String names=list.get(i).getName();
                while(i+1<list.size()&&list.get(i).getSalary()==list.get(i+1).getSalary()){
                    names+=","+list.get(i+1).getName();
                    i++;
                }
                i++;
                System.out.println(names+"  salary:"+list.get(i-1).getSalary()+" 元");
            }
        }
    }
      

  6.   

    输出情况是:
    ----------排序前---------
        name          salary
        n0            0
        n1            1
        n2            2
        n3            3
        n4            4
        n5            5
        n6            6
        n7            0
        n8            1
        n9            2
    ----------排序后---------
        name          salary
        n0            0
        n7            0
        n1            1
        n8            1
        n2            2
        n9            2
        n3            3
        n4            4
        n5            5
        n6            6
    n0,n7  salary:0 元
    n1,n8  salary:1 元
    n2,n9  salary:2 元
    n3  salary:3 元
    n4  salary:4 元
    n5  salary:5 元
    n6  salary:6 元
      

  7.   

    HOHO~~~看了大家的方法,真汗颜
      

  8.   

    难道都要有一个POJO作为载体?没有更高效的代码了吗?
      

  9.   

    HashMap<Integer,List<String>> hm = new HashMap<Integer,List<String>>();
    List<Salary> sls = new ArrayList<Salary>();
    sls.add(new Salary(2000,"张三"));
    sls.add(new Salary(2500,"李四"));
    sls.add(new Salary(2000,"王二"));
    sls.add(new Salary(2000,"张四"));
    for (Iterator<Salary> ite = sls.iterator(); ite.hasNext();) {
    Salary sl = ite.next();
    List<String> names = hm.get(sl.salary);
    if (names == null) {
    names = new ArrayList<String>();
    hm.put(sl.salary, names);
    }
    names.add(sl.name);
    }
    Set<Entry<Integer, List<String>>>  set = hm.entrySet();
    Iterator<Entry<Integer, List<String>>> ite = set.iterator();
    while (ite.hasNext()) {
    Map.Entry<Integer,List<String>> temp = (Map.Entry<Integer,List<String>>)ite.next();
    System.out.println(temp.getKey());
    for (int i = 0; i < temp.getValue().size(); i++) {
    System.out.println(temp.getValue().get(i));
    }
    }