要使用哪些系列?

San*_*ari 0 java

假设我想存储电话号码的人.我应该将哪种类型的集合用于键值对?它应该有助于搜索.名称可能会重复,因此可能会有相同的名称具有不同的电话号码.

Dam*_*ash 5

如果您想使用键值对.不错的选择是使用Map而不是collection.

那么地图商店该怎么办?

它至关重要.首先要确保的是,您的密钥是唯一的,以避免冲突.

class Person {

 long uniqueID; 

 String name; 
 String lastname;

}
Run Code Online (Sandbox Code Playgroud)

所以我们将使用Person的uniqueID作为密钥.

价值怎么样?

在这种情况下更难.由于单个人可以有很多电话号码.但是对于简单的任务,以免人们只能拥有一个电话号码.然后你看起来是什么

class PhoneNumberRegistry {

   Map<Long,String> phoneRegistry = new HashMap<>();

}
Run Code Online (Sandbox Code Playgroud)

长期取自人.处理Maps时,应该实现hashCode和equals方法.

然后你的注册表看起来像

 class PhoneNumberRegistry {

   Map<Person,String> phoneRegistry = new HashMap<>();

}
Run Code Online (Sandbox Code Playgroud)

如果您想为人员存储多个号码,则需要更改地图中的值类型.

您可以使用Set<String>存储多个不会重复的数字.但要完全控制你应该引入新类型,不仅存储数字,而且还有该数字的王.

 class PhoneNumberRegistry {

   Map<Person,HashSet<String>> phoneRegistry = new HashMap<>();

}
Run Code Online (Sandbox Code Playgroud)

但是你必须解决各种问题,例如,我应该返回什么电话号码?