我原来写了一个ArrayList并在其中存储了唯一的值(用户名,即Strings )。 我后来需要使用ArrayList来search用户是否存在。 这是O(n)的search。 我的技术负责人希望我将其更改为HashMap ,并将用户名作为键存储在数组中,并将值存储为空Strings 。 所以,在Java中 – hashmap.put("johndoe",""); 我可以看到这个用户以后是否存在运行 – hashmap.containsKey("johndoe"); 这是O(1)对不对? 我的领导说这是一个更有效的方式来做到这一点,这对我来说是有道理的,但是在hashmap中存储null / empty作为值并将其作为关键字存储在元素中似乎有点不合适。 我的问题是,这是一个好方法吗? 通常, ArrayList#contains的效率或数组search。 有用。 我的担心是,我没有看到任何人在search后做这个。 我可能在某个地方错过了一个显而易见的问题,但我看不到它。