1

我正在尝试将以下对添加到集合中

698xxxxxxx - 人A

698xxxxxxx - 人B

699xxxxxxx - 人A

699xxxxxxx - 人B

我浏览了很多文件并尝试将我在那里找到的对添加到集合中。我希望能够有一个表格来显示每个数字以及与之相关的人,而无需重复 PAIRS。例如

1人没问题

1人Bok

2人还行

3人Bok

3-personB 不好,因为它已经在那里了

我尝试使用 Multimap,但我不确定它是否是正确的选择。无论解决方案是什么,请告诉我如何迭代它的值,以便我可以使用这些对。对不起,要求苛刻的帖子,但我是 Java 新手,我发现很难理解 API。

提前致谢

4

4 回答 4

3

根据您的需要,有三种明显的选择。

  • 如果每个电话号码只能有一个人,那么简单的Map<PhoneNo, Name>.

  • 如果给定的电话号码可以与多个人相关联,则可以是一个Map<Phone,Set<Name>>或一个多地图类。

  • 如果您还想找出每个人的电话号码或号码,则需要两张地图或两张多地图……或双向地图。

您需要做出第二个选择:哈希表与基于树的组织。哈希表将为您提供O(1)查找/插入/删除(假设哈希函数很好)。基于树的实现提供O(logN)操作......但它也允许您按键顺序迭代条目(或值)。

虽然标准 Java 类库不提供多映射或双向映射,但它们可以通过组合简单的集合类轻松实现。

于 2013-05-09T11:07:06.707 回答
1

您可以选择 Java 中的 Map Interface,它接受键和值对。

您可以将此作为参考:http ://www.tutorialspoint.com/java/java_map_interface.htm

于 2013-05-09T11:01:14.007 回答
0

您可能需要一个哈希图,其中键作为人名,值作为数字的 HashSet。Hashset 不允许重复,因此不会存储重复的数字。这是代码:

HashMap<String,HashSet> Records;
于 2013-05-09T11:06:48.657 回答
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 );
}

哈乔

于 2013-05-09T11:08:33.163 回答