登录 | 首页 -> 华新鲜事 -> 创业求职 | 切换到:传统版 / sForum | 树形列表
今天上午去参加面试的java题目, 这个该怎么做?
<<始页  [1]  2  3  下页>  末页>> 

今天上午去参加面试的java题目, 这个该怎么做?

题目:

需要存储如下信息:

+Name+ + country+
John Canada
Bob USA
Tom USA
Alice Canada
Alan Canada
Peter UK

现在删除数据,让每个country只保留一个人,只保留第一次出现那个
则剩下:

+Name+ + country+
John Canada
Bob USA
Peter UK

请选择一种数据结构,并用java代码实现
[JavaProg (12-21 14:21, Long long ago)] [ 传统版 | sForum ][登录后回复]1楼

存容易,删除的时候,淡淡的觉得应该用hash table[Pokemon (12-21 14:25, Long long ago)] [ 传统版 | sForum ][登录后回复]2楼

用excel..countif..Xmlzj  [本文发送自华新iOS APP] [狮子王 (12-21 14:33, Long long ago)] [ 传统版 | sForum ][登录后回复]3楼

这个
 [本文发送自华新iOS APP] [typhoonzj (12-21 14:36, Long long ago)] [ 传统版 | sForum ][登录后回复]4楼

做为一个编程业余爱好者, 我可以用 3个2 dimensional array做到[beerguy (12-21 15:19, Long long ago)] [ 传统版 | sForum ][登录后回复]5楼

也是业余爱好者,但认为关键词是“只保留第一次出现的那个”,不是考运算速度可以用map of linkedlist/arraylist,map的key是country,linkedlist/arraylist是list of string
[GoogleEarth (12-21 15:47, Long long ago)] [ 传统版 | sForum ][登录后回复]6楼

就是简单的HashMap然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。
每到新一行数据都检查已经保存的HashSet里面有没有这个国家,有的话删除这个元素,没有的话加到HashSet里面。HashMap是有remove方法的,所以很容易实现,注意iterator不要乱就行了。
 [本文发送自华新iOS APP] [滚雪球 (12-21 15:52, Long long ago)] [ 传统版 | sForum ][登录后回复]7楼

(引用 滚雪球:就是简单的HashMap然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。 每到新一行数据都检查已经保存的HashSet里面有没有...)不能用Hashmap一定要用LinkedHashMap因为是有序的

import java.util.LinkedHashMap;
import java.util.Map;


public class TestGeneral {

public static void main(String[] args) {

//store orignal User and Country
Map<String , String> hmOriginal = new LinkedHashMap<String , String>();
hmOriginal.put("John", "Canada");
hmOriginal.put("Bob", "USA");
hmOriginal.put("Tom", "USA");
hmOriginal.put("Alice", "Canada");
hmOriginal.put("Alan", "Canada");
hmOriginal.put("Peter", "UK");


//store Updated data
Map<String , String> hmUpdated = new LinkedHashMap<String , String>();

for (Map.Entry<String, String> entry : hmOriginal.entrySet())
{
String sName = entry.getKey();
String sCountry = entry.getValue();

if( !hmUpdated.containsValue(sCountry))
{
hmUpdated.put(sName, sCountry);
}

}

System.out.println("Original data is :"+hmOriginal );
System.out.println("Updated data is :"+hmUpdated );

}

}
[west666 (12-21 16:36, Long long ago)] [ 传统版 | sForum ][登录后回复]8楼

LinkedHashMap要保证遍历顺序不变,存放用linkedhashmap.删除把国家放在任意一个collection就可以了。已经有了就删掉数据,没有就保留数据,把国家放进collection.[小韩 (12-21 16:40, Long long ago)] [ 传统版 | sForum ][登录后回复]9楼

(引用 west666:不能用Hashmap一定要用LinkedHashMap因为是有序的 import java.util.LinkedHashMap; import java.util.Map; public class TestGeneral...)这个方案的前提是人名不会重复。。。[GoogleEarth (12-21 16:45, Long long ago)] [ 传统版 | sForum ][登录后回复]10楼

(引用 滚雪球:就是简单的HashMap然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。 每到新一行数据都检查已经保存的HashSet里面有没有...)如何保证“只保留第一次出现的那个”呢?[GoogleEarth (12-21 16:46, Long long ago)] [ 传统版 | sForum ][登录后回复]11楼

(引用 west666:不能用Hashmap一定要用LinkedHashMap因为是有序的 import java.util.LinkedHashMap; import java.util.Map; public class TestGeneral...)HashMap vs. LinkedHashMap
使用 LinkedHashMap,输出是:(正确)
Original data is :{John=Canada, Bob=USA, Tom=USA, Alice=Canada, Alan=Canada, Peter=UK}
Updated data is :{John=Canada, Bob=USA, Peter=UK}

使用 HashMap,输出是:(错误)
Original data is :{Tom=USA, Bob=USA, Alice=Canada, Alan=Canada, John=Canada, Peter=UK}
Updated data is :{Tom=USA, Alice=Canada, Peter=UK}
[west666 (12-21 16:48, Long long ago)] [ 传统版 | sForum ][登录后回复]12楼

(引用 west666:HashMap vs. LinkedHashMap 使用 LinkedHashMap,输出是:(正确) Original data is :{John=Canada, Bob=USA, Tom=USA, Alice=Canada, Al...)多谢指正我以为顺序不会随便变的,基础太差。  [本文发送自华新iOS APP] [滚雪球 (12-21 18:06, Long long ago)] [ 传统版 | sForum ][登录后回复]13楼

(引用 west666:不能用Hashmap一定要用LinkedHashMap因为是有序的 import java.util.LinkedHashMap; import java.util.Map; public class TestGeneral...)围观各路大神  [本文发送自华新iOS APP] [颖州人氏xyc (12-22 0:22, Long long ago)] [ 传统版 | sForum ][登录后回复]14楼

(引用 颖州人氏xyc:围观各路大神)奇怪,这种小剋思也搞这么复杂?要趁墟员有什么用?  [本文发送自华新iOS APP] [西东南北风 (12-22 3:53, Long long ago)] [ 传统版 | sForum ][登录后回复]15楼

(引用 西东南北风:奇怪,这种小剋思也搞这么复杂?要趁墟员有什么用?)招程序员还要当场学程序的啊
幸亏我不会编程。软件公司的人飘过。。
 [本文发送自华新iOS APP] [greenfox (12-22 7:05, Long long ago)] [ 传统版 | sForum ][登录后回复]16楼

楼上都是0分for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的
[乌龙茶999 (12-22 8:40, Long long ago)] [ 传统版 | sForum ][登录后回复]17楼

(引用 乌龙茶999:楼上都是0分for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的 )程序员不考虑各种的情况吗?比如重名

正确答案请见我最开始的回复
 [本文发送自华新iOS APP] [GoogleEarth (12-22 9:04, Long long ago)] [ 传统版 | sForum ][登录后回复]18楼

c#的话就dictionary  [本文发送自华新iOS APP] [cy1024 (12-22 9:27, Long long ago)] [ 传统版 | sForum ][登录后回复]19楼

(引用 乌龙茶999:楼上都是0分for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的 )请提供代码大佬
你把代码写出来看看。
[west666 (12-22 10:24, Long long ago)] [ 传统版 | sForum ][登录后回复]20楼


<<始页  [1]  2  3  下页>  末页>> 
登录 | 首页 -> 华新鲜事 -> 创业求职 | [刷新本页] | 切换到:传统版 / sForum