数据样本:
人名/小时数
【张三】【3】
【李四】【2】
【王五】【5】
【张三】【1】
要求:将各人名下小时数相加,得出以下结果
张三:4小时
李四:2小时
王五:5小时
请问:
1. 请告知程序思路。
2. 是否用数组?
3. 最好能写一个简单范例,不要求机器上能通过,但要能看清楚思路。
人名/小时数
【张三】【3】
【李四】【2】
【王五】【5】
【张三】【1】
要求:将各人名下小时数相加,得出以下结果
张三:4小时
李四:2小时
王五:5小时
请问:
1. 请告知程序思路。
2. 是否用数组?
3. 最好能写一个简单范例,不要求机器上能通过,但要能看清楚思路。
然后一次次取出数据,放到hashtable中,
如果已经没有,直接put进去,
如果有了,把原hashtable中的值取出来,再加上现在的值得到的新值存进去。
这样最后这个hashtable中存放的就是人名/小时数的键值对了!
LZ可以试下
*
*/
package net.csdn.blog.johnston;import java.util.Hashtable;/**
* @author Administrator
*
*/
public class TestCount { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[][] nameAndTime = {{"张三","1"},{"李四","2"},{"王五","3"},{"张三","4"},{"王五","5"}}; //初始化数据
Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
for (int i=0; i<nameAndTime.length; i++) {
for (int j=0; j<nameAndTime[i].length-1; j++) {
String name = nameAndTime[i][j];
int time = Integer.parseInt(nameAndTime[i][j+1].trim());
//输出取出的数据
System.out.println("name:" + name + "time: " + time);
if (ht.containsKey(name)) { //如果ht已经有键了,则需要相加后重新设置它的键
time = time + ht.get(name);
ht.put(name, time);
} else {
ht.put(name, time);
}
}
}
System.out.println("处理后的结果:" + ht);
}}运行结果:
name:张三time: 1
name:李四time: 2
name:王五time: 3
name:张三time: 4
name:王五time: 5
处理后的结果:{王五=8, 张三=5, 李四=2}