【问题标题】:Can we create a pair (a,b) as values in Hashtable in Java我们可以在 Java 的 Hashtable 中创建一对 (a,b) 作为值吗
【发布时间】:2014-03-13 00:09:10
【问题描述】:

我是 Java 的新生。我学到了 hashtable 可能会帮助我解决问题。

我想创建一个哈希表,它的每个条目都是一个键值对

<Float, (a,b) >

每个条目都包含一个多对的链表,我该如何编写代码来实现它?

【问题讨论】:

  • 那么用链式哈希存储一个元组?是否允许使用标准 Java 库?
  • 元组是Java库中的数据结构吗?
  • 不,创建一个类似Pair 的类或使用Point 或类似的现有类(取决于您的需要)。

标签: java linked-list hashtable


【解决方案1】:

首先,创建一个Pair 类:

//A and B are generics
class Pair<A, B> {
    private A element1;
    private B element2;
    public Pair(A element1, B element2) {
        this.element1 = element1;
        this.element2 = element2;
    }
    //public getters...
}

其次,有一个Map&lt;Float, List&lt;Pair&lt;A, B&gt;&gt;&gt; 来插入您的键/值:

Map<Float, List<Pair<A, B>>> table = new HashMap<Float, List<Pair<A, B>>>();

第三,创建一个由LinkedList&lt;Pair&lt;A, B&gt;&gt;支持的List&lt;Pair&lt;A, B&gt;&gt;

List<Pair<A, B>> myList = new LinkedList<Pair<A, B>>();

第四,将您的列表添加到您的地图中。

table.put(1, myList);

您不应直接使用LinkedListHashMap 类,而应尝试使用code oriented to interfaces。另外,我建议您使用另一个键来代替FloatDouble,因为它们的值可能因floating point comparison 而不同。我会推荐IntegerLongStringBigDecimal 而不是Float

【讨论】:

    【解决方案2】:

    对象如下:

    HashTable<Object,LinkedList<Object>> obj = new HashTable<Object,LinkedList<Object>>();
    

    添加元素只需使用put 方法。

    【讨论】:

    • 您应该避免使用Hashtable 类。而是使用由HashMap 支持的Map
    • Offcource @LuiggiMendoza 但 OP 想要 HashTable。
    • 这并不意味着您应该回答 Hashtable(请注意,没有 HashTable 类,请检查 T)。当您应该使用由ArrayList 支持的List 时,它类似于向人们展示如何使用Vector。更多信息:stackoverflow.com/q/1386275/1065197
    【解决方案3】:

    HashMap的值入口可以是任意Object,LinkedList是一个对象所以

    HashMap<typeofkey,LinkedListy<Typeofvalueobject> map = new HashMap<>();
    

    只需将 typeofkey 和 typeofvalue 替换为合适的类型

    【讨论】:

      【解决方案4】:

      您可以使用Point 来表示一对点,或者您自己的具有 2 个 int 或双条目的类。使用您自己的类将两个值包装和保存在一起的优点是它可以简单且特定于您的需求。在任何情况下,这些都是您在 HashTable 中的值。

      【讨论】:

      • 谢谢。没想到
      猜你喜欢
      • 2022-06-27
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2019-10-27
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多