我这个真的是全手工定制map啊,过了50%,数组越界还是超时给忘记了,太难了
package 笔试.搜狗;
import java.util.*;
class map {
public ArrayList<HashMap<String, Integer>> list = new ArrayList<>();
public ArrayList<HashMap<String, Integer>> taotaiList = new ArrayList<>();
int size;
public map(int n) {
size = n;
}
public void insert(String key, Integer value) {
if (isHave(key) != null) {
//存在
HashMap<String, Integer> have = isHave(key);
if (have.get(key) < value) {
//需要更新,删除以前,插入新的
//删除
deleteMap(key);
have.put(key, value);
list.add(have);
}
} else {
//不存在
HashMap<String, Integer> newMap = new HashMap<>();
newMap.put(key, value);
if (list.size() < size) {
//list大小满足,直接保存
list.add(newMap);
} else {
taotaiList.add(list.get(0));
list.remove(0);
insert(key, value);
}
}
}
/**
* 判断是否存在
* 存在返回这个map
* 不存在返回null
*
* @param key
* @return
*/
public HashMap<String, Integer> isHave(String key) {
HashMap<String, Integer> oldMap = null;
for (HashMap<String, Integer> map1 : list) {
if (map1.containsKey(key)) {
oldMap = map1;
}
}
return oldMap;
}
/**
* 删除相同的key之前的数据
*
* @param key
*/
public void deleteMap(String key) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).containsKey(key)) {
list.remove(list.get(i));
}
}
}
}
public class T1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
map map = new map(n);
ArrayList<String> list = new ArrayList<>();
String next = sc.nextLine();
while (sc.hasNextLine()) {
list.add(sc.nextLine());
}
for (String s1 : list) {
map.insert(s1.split(" ")[0], Integer.parseInt(s1.split(" ")[1]));
}
for (int i = 0; i < map.taotaiList.size(); i++) {
Set<String> set = map.taotaiList.get(i).keySet();
for (String s : set) {
System.out.println(s + " " + map.taotaiList.get(i).get(s));
}
}
}
}