繁体   English   中英

哪个集合适用于Java中的电话号码+名称对?

[英]Which collection is suitable for tel number + name pair in Java?

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

698xxxxxxx-personA

698xxxxxxx-人B

699xxxxxxx-personA

699xxxxxxx-人B

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

1人即可

1人同行

2人同行

3人同行

3人B不好,因为它已经在那里

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

提前致谢

有三种明显的选择,具体取决于您的需求。

  • 如果每个电话号码只能有一个人,则使用一个简单的Map<PhoneNo, Name>

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

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

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

尽管标准Java类库不提供多图或双向图,但可以通过组合简单的集合类来轻松实现它们。

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

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

您可能需要一个散列表,其中的键是人的名字,值是一个HashSet数字。 哈希集不允许重复,因此重复的数字将不会存储在其中。 这是代码:

HashMap<String,HashSet> Records;

在Java中,有两种选择。 如果您不知道人员或数字的基数,请进行以下操作:

public class Pair {
  String person;
  String number;
  }

然后使用Set从doublette保存

Set<Pair> pairs = new HashSet<>();
....
pairs.add( new Pair( "689xxxx", "personA" );
for ( Pair pair : pairs ) {
  System.out.println( pair.number + " - " + pair.person );
}

Hajo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM