我正在尝试将以下对添加到集合中
698xxxxxxx - personA
698xxxxxxx - personB
699xxxxxxx - personA
699xxxxxxx - personB
我浏览了很多文件并尝试将我在那里找到的对添加到一个集合中。我希望能够有一个表格,可以显示每个数字以及与之相关的人物,而不需要进行公开的PAIRS。例如
1人A好
1人B好
2人A好
3人B好
3人B不行,因为它已经存在
我尝试使用Multimap,但我不确定它是否是正确的选择。无论解决方案是什么,请告诉我如何通过它的值进行迭代,以便我可以使用这些对。对于要求很高的帖子感到抱歉,但我是Java新手,我发现很难理解API。
提前致谢
答案 0 :(得分:2)
根据您的需要,有三种明显的替代方案。
如果每个电话号码只能有一个人,那么只需一个简单的Map<PhoneNo, Name>
。
如果某个给定的电话号码可以与多个人关联,则可以是Map<Phone,Set<Name>>
或多地图类。
如果您还想查找每个人的电话号码或号码,您需要两张地图或两张多地图......或双向地图。
您需要做出次要选择:哈希表与基于树的组织。哈希表将为您提供O(1)
查找/插入/删除(假设哈希函数是好的)。基于树的实现提供O(logN)
个操作......但它也允许您按键顺序迭代条目(或值)。
虽然标准Java类库不提供多映射或双向映射,但可以通过组合简单集合类轻松实现它们。
答案 1 :(得分:1)
您可以选择Java中的Map Interface,它接受键和值对。
您可以将此作为参考:http://www.tutorialspoint.com/java/java_map_interface.htm
答案 2 :(得分:0)
您可能需要一个hashmap,其中key作为person的名称,值为HashSet数字。 Hashset不允许重复,因此不会存储重复的数字。这是代码:
HashMap<String,HashSet> Records;
答案 3 :(得分:0)
在Java中有几种选择。如果您不知道人或数字的基数,请选择:
public class Pair {
String person;
String number;
}
然后使用Set来保存像
这样的双重图像Set<Pair> pairs = new HashSet<>();
....
pairs.add( new Pair( "689xxxx", "personA" );
for ( Pair pair : pairs ) {
System.out.println( pair.number + " - " + pair.person );
}
哈乔