当前位置: 首页 > 面试题库 >

如何在Java中为无序对写集

黄泰宁
2023-03-14
问题内容

我需要有一个Set(HashSet),以便如果我插入一个对(a, b)并且如果(b, a)已经在集合中,那么插入将被忽略。如何用Java做到这一点?

非常感谢!


问题答案:

好吧,这取决于您的课程的hashCode()equals()方法Pair。他们需要忽略顺序。

Set本身就是一个很好的例子,它忽略了相等的顺序-
您可以查看的代码AbstractSet。如果甚至在相等比较之外对对的顺序也没有关系,则可以只将HashSets(每个元素包含两个元素)存储在集合中。最好将其包装为数据类型:

 public class UnorderedPair<T> {
     private final Set<T> set;

     public UnorderedPair(T a, T b) {
          set = new HashSet<T>();
          set.add(a);
          set.add(b);
     }

     public boolean equals(Object b) {
         //...delegate to set
     }

     public int hashCode() {
         return set.hashCode();
     }
}


 类似资料:
  • 问题内容: 我在Java中有一个记录的类。 我有一个forloop,使该类的多个实例并将它们添加到列表中。 假设每个类都有一个分配给他们的值,我该如何根据值(最大的在前)排序列表 问题答案: 您可以使用;并实现接口并编写决定对列表进行排序的实现方法。 为了实施, 参考: 详细编码。

  • 我正在为我的HeapSort静态方法开发一个辅助方法私有E sortRemove()。让我注意一下,这个堆是一个MaxHeapPriorityQueue,它的所有元素都有一个子元素,其值小于父元素。 我正在努力 重复调用删除,直到堆为空。 但是,当一个元素被“删除”时,它被移动到数组的末尾,而不是完全从数组中逐出。 当你完成时,瞧!数组已排序。 我试图弄清楚如何让这个算法适合我的代码。 因此我有:

  • 问题内容: 我已经寻找了一段时间,想要一种对JSON对象进行排序的方法,如下所示: 并按字母顺序按值“ COMMERCIALNAME_E”得到: 我找不到任何可以做到这一点的代码。谁能给我些帮助? 问题答案: 将这些JSON解析为“对象集合”,然后使用比较器通过您喜欢的字段对其进行排序。 使用GSON将其解析为对象集合 例: 如果要从Object创建JSON。

  • 问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。

  • 问题内容: 我们如何排序? 我想根据中的值进行排序。 问题答案: 你是否必须使用HashMap?如果只需要Map Interface,请使用TreeMap 如果要通过比较HashMap中的值进行排序。你必须编写代码才能执行此操作,如果要执行此操作,则可以对HashMap的值进行排序: 如果你想经常访问此排序列表,则可以将元素插入到中,尽管集合和列表的语义有些不同。

  • 问题内容: 我不能在数据库中执行ORDER BY 问题答案: 将数据从ResultSet中移到所需的任何对象表示形式中,然后对数据进行排序,就像此时的其他任何数据一样。 如果您使用Collections.Sort对复杂对象进行排序,则需要实现Comparator。