由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Java 面试关于map 和set
相关主题
hash_map 的遍历问题4sum o(n^2)超时
Amazon onsite 面经Google电面
请教一个新鲜算法面试题HashTable space complexity?
一个实际碰到的问题面试题求解:remove first duplicate number from an array
求点评:电话面试(今天第二天没有消息回复,感觉可能挂了)问个Java的HashSet.contains的问题
subsetLinked电面分享,挺好的题 应该已挂
有些面试题是够扯蛋的问道题目 Map的iterator
LeetCode 的 4 sum 问题 如何用hash table做呢?请教一道面试题
相关话题的讨论汇总
话题: map话题: object话题: set话题: hashset话题: hashmap
进入JobHunting版参与讨论
1 (共1页)
f********a
发帖数: 165
1
given Map hashMap 和 Set hashset,当set的key出现在map里面时,删除Map
里面的元素,最后返回map.
public void modifyMap(Map hashmap, Set hashset)
{
}
面试官说3行就可以搞定,那位大侠说说?
p*****2
发帖数: 21240
2
貌似是三行吧。用Clojure估计一样应该能搞定吧。
f********a
发帖数: 165
3
二爷写一下吧。

【在 p*****2 的大作中提到】
: 貌似是三行吧。用Clojure估计一样应该能搞定吧。
p*****2
发帖数: 21240
4

好久没写Java了,这个行吗?
modifyMap = (map, set)->
delete map[k] for k in set

【在 f********a 的大作中提到】
: 二爷写一下吧。
b***f
发帖数: 11
5
public void modifyMap(Map hashmap, Set hashset)
{
for(K key : hashset)
hashmap.remove(key);
}
如果不对请指正
f********a
发帖数: 165
6
对的,谢谢。

【在 b***f 的大作中提到】
: public void modifyMap(Map hashmap, Set hashset)
: {
: for(K key : hashset)
: hashmap.remove(key);
: }
: 如果不对请指正

d******u
发帖数: 1142
7
题目是要求保留key 出现在 set 里的元素,这个不是删除了这些元素么?
我觉得是正确的是这样:
public void modifyMap(Map hashmap, Set hashset){
for (K key: hashmap.keySet()){
if (!hashset.contains(key)) hashmap.remove(key);
}
}

【在 b***f 的大作中提到】
: public void modifyMap(Map hashmap, Set hashset)
: {
: for(K key : hashset)
: hashmap.remove(key);
: }
: 如果不对请指正

S*******C
发帖数: 822
8
这种方法会抛出ConcurrentModificationException异常,因为迭代过程中不允许修改
hashmap的state
/**
given Map hashMap 和 Set hashset,当set的key出现在map里面时,保留Map
里面的元素,最后返回map.
*/
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class SetAndMap {
public static void main(String args[]){
Map hashmap=new HashMap();
hashmap.put("1","A");
hashmap.put("2","B");
hashmap.put("3","C");
hashmap.put("4","D");
hashmap.put("5","E");
System.out.println("Before modifying map: map ="+hashmap.entrySet());
Set hashset=new HashSet();
hashset.add("1");
hashset.add("3");
hashset.add("5");
new SetAndMap().modifyMap(hashmap, hashset);
System.out.println("After modifying map: map "+hashmap.entrySet());
}
//wrong!
public void modifyMap2(Map hashmap, Set hashset)
{
Set keyset=((ConcurrentHashMap)hashmap).
keySet();
for(Object key: keyset){
if(!hashset.contains(key))
hashmap.remove(key);
}
}
//correct
public void modifyMap(Map hashmap, Set hashset) {
Iterator keyset=hashmap.keySet().iterator();
while(keyset.hasNext()){
if(!hashset.contains(keyset.next()))
keyset.remove();
}
}
}

【在 d******u 的大作中提到】
: 题目是要求保留key 出现在 set 里的元素,这个不是删除了这些元素么?
: 我觉得是正确的是这样:
: public void modifyMap(Map hashmap, Set hashset){
: for (K key: hashmap.keySet()){
: if (!hashset.contains(key)) hashmap.remove(key);
: }
: }

q********c
发帖数: 1774
9
这个,数了一下,正好三行。哪个公司啊?

Map
for(K key : hashset)
if(!hashmap.contains(key))
hashmap.remove(key);

【在 f********a 的大作中提到】
: given Map hashMap 和 Set hashset,当set的key出现在map里面时,删除Map
: 里面的元素,最后返回map.
: public void modifyMap(Map hashmap, Set hashset)
: {
: }
: 面试官说3行就可以搞定,那位大侠说说?

j**w
发帖数: 382
10
public void modifyMap(Map hashmap, Set hashset)
{
Iterator it = hashmap.entrySet().iterator();
while (it.hasNext())
{
Entry entry = (Entry) it.next(
);

if (hashset.contains(entry.getKey()))
continue;
else
hashmap.remove(it);
}
}
相关主题
subset4sum o(n^2)超时
有些面试题是够扯蛋的Google电面
LeetCode 的 4 sum 问题 如何用hash table做呢?HashTable space complexity?
进入JobHunting版参与讨论
z****e
发帖数: 54598
11
Set tempSet = new HashSet(map.keySet());
tempSet.removeAll(set);
for(K k:tempSet) map.remove(k);
这里有个陷阱,考java里面的reference
第一行很重要,一定要new,否则会出问题
z****e
发帖数: 54598
12
用ruby的话,这里有一个陷阱
上一个需求我在这里耗了一整天
java好很多,主要是set/map太好用了

【在 p*****2 的大作中提到】
: 貌似是三行吧。用Clojure估计一样应该能搞定吧。
c******3
发帖数: 296
13
说3行就3行:
public void modifyMap(Map hashmap, Set hashset) {
Iterator> it = hashmap.entrySet().iterator();
while (it.hasNext())
if (!hashset.contains(it.next().getKey())) it.remove();
}
d**********u
发帖数: 3371
14
re

【在 z****e 的大作中提到】
: 用ruby的话,这里有一个陷阱
: 上一个需求我在这里耗了一整天
: java好很多,主要是set/map太好用了

D****6
发帖数: 278
15
什么陷阱??展开讲讲。

【在 z****e 的大作中提到】
: Set tempSet = new HashSet(map.keySet());
: tempSet.removeAll(set);
: for(K k:tempSet) map.remove(k);
: 这里有个陷阱,考java里面的reference
: 第一行很重要,一定要new,否则会出问题

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一道面试题求点评:电话面试(今天第二天没有消息回复,感觉可能挂了)
请教一道LinkedIn面试的经典题subset
hashmap和hashtable的区别?有些面试题是够扯蛋的
请问pure storage 的那道map 数据结构题LeetCode 的 4 sum 问题 如何用hash table做呢?
hash_map 的遍历问题4sum o(n^2)超时
Amazon onsite 面经Google电面
请教一个新鲜算法面试题HashTable space complexity?
一个实际碰到的问题面试题求解:remove first duplicate number from an array
相关话题的讨论汇总
话题: map话题: object话题: set话题: hashset话题: hashmap