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

如何确定列表是否用Java排序?

谢志文
2023-03-14
问题内容
      我想要一个方法,该方法采用List<T>where T实现Comparable和返回,true或者false取决于列表是否已排序

用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类问题,但我正全神贯注。

如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。


问题答案:

Guava 通过其出色的Ordering类提供了此功能。An OrderingComparator++。在这种情况下,如果你具有实现的某种类型的列表Comparable,则可以编写:

boolean sorted = Ordering.natural().isOrdered(list);

这适用于任何Iterable,而不仅仅是List,你可以null通过指定s应该在其他任何非null元素之前还是之后轻松地处理s :

Ordering.natural().nullsLast().isOrdered(list);

另外,由于你提到你希望能够检查颠倒顺序和正常顺序,因此可以这样做:

Ordering.natural().reverse().isOrdered(list);

Java 8用户:请改用等效的Java语言Comparators#isInOrder(Iterable),因为其余的Ordering大多已过时(如类文档中所述)。



 类似资料:
  • 问题内容: 我正在尝试编写一个函数,该函数将测试列表是否按降序排列。到目前为止,这是我所拥有的,但似乎不适用于所有列表。 我使用了列表,它返回了。 我似乎无法弄清楚我的错误在哪里。 问题答案: 您宁可进行反向检查(一旦获得,则返回false

  • 我需要估计数组列表是否已排序(不排序)。 对字符串进行排序时,它们是按字母顺序排列的。我尝试使用compareTo()方法来确定哪个字符串先出现 如果数组列表已排序,则返回true,否则返回false。 代码: 简单测试: 这个简单的测试只显示覆盖率。 如何解决这个问题。

  • 问题内容: 我正在尝试确定Pandas列中是否有一个具有特定值的条目。我试图用来做到这一点。我以为这是行得通的,除非当我向它提供一个我不知道的值时,它仍然返回。当我将一个子集添加到仅包含与缺少的ID匹配的条目的数据框时,显然其中没有条目。如何确定Pandas数据框中的列是否包含特定值,为什么我的当前方法不起作用?)。 问题答案: Series的值检查值是否在索引中: 一种选择是查看它是否具有唯一值

  • 问题内容: 我所说的结构是: 操作复杂度O(log n) O(log n)查找元素的复杂度 O(n)复杂度进行计算,将被排序 问题答案: 标准Python列表不以任何形式排序。标准的heapq模块可用于将O(log n)追加到现有列表中,并删除O(log n)中最小的模块,但在定义中不是排序列表。 有许多符合您需求的Python平衡树实现,例如rbtree,RBTree或pyavl。

  • 问题内容: 由于ResultSet包含从动态SQL返回的数据,是否有任何方法可以确定ResultSet是否包含特定的列名?例如,如果我运行但Column_ABC确实不存在,它将抛出异常。如何测试ResultSet是否可以从名为“ Column_ABC”的列中获取数据? 问题答案: 使用该类。 我不明白的是为什么会需要此功能。正在执行的查询或存储过程应具有已知结果。查询的列应该是已知的。需要这样的功

  • 问题内容: 遗留代码以这种方式执行此操作: …但是我发现它并不总是有效。调用该方法并获取后,一些代码会在表中更改以添加一些列,但是我得到了: 列ID在规范中出现了多次。 我在StackOverflow上发现了两个很有希望的SQL语句: 和 …但是不确定如何在C#/ .NET 1.1中实现 我是否需要使用ExecuteScalar并将返回的值转换为布尔值?或者是其他东西? 更新 将其更改为此并不能解