根据以下表格信息,使用java语言,写出获得相同工资员工名称(不考虑重名可能性)的算法,(算法效率越高越好)
员工 工资
张三 2000
李四 1500
王二 2800
Adams 4000
David 1000
Max 1500
Peter 2000
员工 工资
张三 2000
李四 1500
王二 2800
Adams 4000
David 1000
Max 1500
Peter 2000
解决方案 »
- Could not find action or result报错?
- jsp中include.inc的作用是什么?
- 一个登录页面
- 求javascript面试笔试题目
- 困惑:eclipse+myeclipse+tomcat做web application中几个工程相互干扰了
- 在线急等如何把jsp页面的数据和图片输出到word和excel文件中,且在word和excel文件中正确显示图片
- JSP高手请进,JSP连接SQLserver数据库错误?
- 怎么在新窗口打开html页面
- 简单的JSP变量语法问题!!!!!!!!
- 如何锁定以对象,让别的线程访问不了这个对象的任何内容
- 怎么给textarea赋值
- struts DispatchAction 的应用
这题貌似不难哦,先将所有员工姓名取出放入一数组中,两个for就可以搞定,
Map<String,Integer> empMap=new HashMap<String,Integer>();
empMap.put("张三",2000);
empMap.put("李四",1500);
empMap.put("王五",1500);
empMap.put("赵六",2000);
//生命一map存放统计结果
Map<Integer,List<String>> resultMap=new HashMap<Integer,List<String>>();//将结果统计到resultMap中
for(String empName:empMap.keySet()){
if(resultMap.get(empMap.get(empName))!=null){
resultMap.get(empMap.get(empName)).add(empName)
}else{
List<String> list=new ArrayList<String>();
list.add(empName);
resultMap.put(empMap.get(empName),list);
}
}
//以上是我个人的想法,不对的地方请高手指点一下。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;@SuppressWarnings("unchecked")
public class Salary
{
public static void main(String[] args)
{
Map data = new HashMap();
data.put("张三", 2000);
data.put("李四", 2000);
data.put("王二", 2800);
data.put("Adams", 4000);
data.put("David", 1000);
data.put("Max", 1500);
data.put("Peter", 2000);
Map result = new HashMap();
Iterator keys = data.keySet().iterator();
while(keys.hasNext())
{
String key = keys.next().toString();
String val = data.get(key).toString();
List list = new ArrayList();
if(null != result.get(val))
list = (List)result.get(val);
list.add(key);
result.put(val, list);
}
new Salary().show(result);
}
public void show(Map map)
{
Iterator keys = map.keySet().iterator();
while(keys.hasNext())
{
String key = keys.next().toString();
System.out.println(map.get(key));
}
}
}