加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – 一种了解集合是否有序的方法

发布时间:2020-12-15 08:46:52 所属栏目:Java 来源:网络整理
导读:我正在寻找一种方法来查找运行时,是否订购集合.有什么办法吗? 编辑:我很抱歉提出错误的问题.我的意思是说有一些通用的方法可以说HashMap不存储被插入的元素的顺序,而LinkedHashMap就是这样做的. 解决方法 对于实现Comparable接口的元素,您可以检查它们是否
我正在寻找一种方法来查找运行时,是否订购集合.有什么办法吗?

编辑:我很抱歉提出错误的问题.我的意思是说有一些通用的方法可以说HashMap不存储被插入的元素的顺序,而LinkedHashMap就是这样做的.

解决方法

对于实现Comparable接口的元素,您可以检查它们是否处于“自然”顺序.

public static <T extends Comparable<? super T>> boolean isOrdered(Iterable<T> list) {
  Iterator<T> i = list.iterator();
  if (i.hasNext()) {
    T previous = i.next();
    while (i.hasNext()) {
      T current = i.next();
      if (previous.compareTo(current) > 0)
        return false;
      previous = current;
    }
  }
  return true;
}

否则,您必须定义一个比较器,它可以根据您的顺序定义比较您的对象,并将其传递给测试.

public static <T> boolean isOrdered(Iterable<T> list,Comparator<? super T> c) {
  Iterator<T> i = list.iterator();
  if (i.hasNext()) {
    T previous = i.next();
    while (i.hasNext()) {
      T current = i.next();
      if (c.compare(previous,current) > 0)
        return false;
      previous = current;
    }
  }
  return true;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读