今天上午去参加面试的java题目, 这个该怎么做?
登录 | 论坛导航 -> 华新鲜事 -> 创业求职 | 本帖共有 52 楼,分 3 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  2  3    末页>>
作者:JavaProg (等级:2 - 初出茅庐,发帖:184) 发表:2017-12-21 14:21:12  楼主  关注此帖评分:
今天上午去参加面试的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代码实现
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:Pokemon (等级:2 - 初出茅庐,发帖:206) 发表:2017-12-21 14:25:16  2楼
存容易,删除的时候,淡淡的觉得应该用hash table
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:狮子王 (等级:5 - 略有小成,发帖:2046) 发表:2017-12-21 14:33:08  3楼
用excel..countif..
Xmlzj
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:typhoonzj (等级:4 - 马马虎虎,发帖:5603) 发表:2017-12-21 14:36:53  4楼
这个

[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:beerguy (等级:4 - 马马虎虎,发帖:1603) 发表:2017-12-21 15:19:27  5楼
做为一个编程业余爱好者, 我可以用 3个2 dimensional array做到
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:GoogleEarth (等级:4 - 马马虎虎,发帖:882) 发表:2017-12-21 15:47:05  6楼
也是业余爱好者,但认为关键词是“只保留第一次出现的那个”,不是考运算速度
可以用map of linkedlist/arraylist,map的key是country,linkedlist/arraylist是list of string
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:滚雪球 (等级:11 - 出神入化,发帖:11187) 发表:2017-12-21 15:52:17  7楼
就是简单的HashMap
然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。
每到新一行数据都检查已经保存的HashSet里面有没有这个国家,有的话删除这个元素,没有的话加到HashSet里面。HashMap是有remove方法的,所以很容易实现,注意iterator不要乱就行了。
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:west666 (等级:2 - 初出茅庐,发帖:146) 发表:2017-12-21 16:36:54  8楼
就是简单的HashMap然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。 每到新一行数据都检查已经保存的HashSet里面有没有这个国家,有的话删除这个元素,没有的话加到HashSet里面。HashMap是有remove方法的,所以很容易实现,注意iterator不要乱就行了。
不能用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 );

}

}
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:小韩 (等级:2 - 初出茅庐,发帖:12) 发表:2017-12-21 16:40:22  9楼
LinkedHashMap
要保证遍历顺序不变,存放用linkedhashmap.删除把国家放在任意一个collection就可以了。已经有了就删掉数据,没有就保留数据,把国家放进collection.
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:GoogleEarth (等级:4 - 马马虎虎,发帖:882) 发表:2017-12-21 16:45:25  10楼
不能用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 hmOriginal = new LinkedHashMap(); 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 hmUpdated = new LinkedHashMap(); for (Map.Entry 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 ); } }
这个方案的前提是人名不会重复。。。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:GoogleEarth (等级:4 - 马马虎虎,发帖:882) 发表:2017-12-21 16:46:13  11楼
就是简单的HashMap然后loop一次,loop的时候把国家名字保存在一个临时的HashSet里面。 每到新一行数据都检查已经保存的HashSet里面有没有这个国家,有的话删除这个元素,没有的话加到HashSet里面。HashMap是有remove方法的,所以很容易实现,注意iterator不要乱就行了。
如何保证“只保留第一次出现的那个”呢?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:west666 (等级:2 - 初出茅庐,发帖:146) 发表:2017-12-21 16:48:40  12楼
不能用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 hmOriginal = new LinkedHashMap(); 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 hmUpdated = new LinkedHashMap(); for (Map.Entry 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 ); } }
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}
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:滚雪球 (等级:11 - 出神入化,发帖:11187) 发表:2017-12-21 18:06:51  13楼
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}
多谢指正
我以为顺序不会随便变的,基础太差。
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:颖州人氏xyc (等级:3 - 略知一二,发帖:676) 发表:2017-12-22 00:22:39  14楼
不能用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 hmOriginal = new LinkedHashMap(); 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 hmUpdated = new LinkedHashMap(); for (Map.Entry 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 ); } }
围观各路大神
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:西东南北风 (等级:7 - 出类拔萃,发帖:4084) 发表:2017-12-22 03:53:22  15楼
奇怪,这种小剋思
也搞这么复杂?要趁墟员有什么用?
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:greenfox (等级:3 - 略知一二,发帖:1390) 发表:2017-12-22 07:05:57  16楼
奇怪,这种小剋思也搞这么复杂?要趁墟员有什么用?
招程序员
还要当场学程序的啊
幸亏我不会编程。软件公司的人飘过。。
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:乌龙茶999 (等级:2 - 初出茅庐,发帖:159) 发表:2017-12-22 08:40:40  17楼
楼上都是0分
for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:GoogleEarth (等级:4 - 马马虎虎,发帖:882) 发表:2017-12-22 09:04:11  18楼
楼上都是0分for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的
程序员不考虑各种的情况吗?
比如重名

正确答案请见我最开始的回复
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:cy1024 (等级:2 - 初出茅庐,发帖:814) 发表:2017-12-22 09:27:56  19楼
c#的话就dictionary
[本文发送自华新iOS App]
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:west666 (等级:2 - 初出茅庐,发帖:146) 发表:2017-12-22 10:24:06  20楼
楼上都是0分for loop倒过来,简单map就搞定的事情,非要搞个不知道啥鬼LinkedHashMap。果然Java程序员都不考虑性能的,赞的
请提供代码
大佬
你把代码写出来看看。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 创业求职 | 返回上一页 | 本主题共有 52 篇文章,分 3 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  2  3  末页>>

请登录后回复:帐号   密码