Java中NavigableMap ceilingEntry()方法

Java中NavigableMap ceilingEntry()方法

Java中的NavigableMap是一种有序映射,它提供的ceilingEntry()方法可以查找并返回键大于等于给定键的最小键值对。本文将介绍ceilingEntry()方法的详细用法。

NavigableMap简介

NavigableMap是Java中的一种有序映射,它继承自SortedMap接口,并额外提供了一些方法,例如ceilingEntry()、floorEntry()、higherEntry()等,这些方法能够更好地支持对键的处理。

下面是NavigableMap接口的类继承关系和方法列表:

public interface NavigableMap<K,V> extends SortedMap<K,V> {
    Map.Entry<K,V> lowerEntry(K key);
    K lowerKey(K key);
    Map.Entry<K,V> floorEntry(K key);
    K floorKey(K key);
    Map.Entry<K,V> ceilingEntry(K key);
    K ceilingKey(K key);
    Map.Entry<K,V> higherEntry(K key);
    K higherKey(K key);
    Map.Entry<K,V> firstEntry();
    Map.Entry<K,V> lastEntry();
    Map.Entry<K,V> pollFirstEntry();
    Map.Entry<K,V> pollLastEntry();
    NavigableMap<K,V> descendingMap();
    NavigableSet<K> navigableKeySet();
    NavigableSet<K> descendingKeySet();
    NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive,K toKey, boolean toInclusive);
    NavigableMap<K,V> headMap(K toKey, boolean inclusive);
    NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
    SortedMap<K,V> subMap(K fromKey, K toKey);
    SortedMap<K,V> headMap(K toKey);
    SortedMap<K,V> tailMap(K fromKey);
}

NavigableMap继承自SortedMap,因此SortedMap中的方法也可以在NavigableMap中使用。

ceilingEntry()方法详解

ceilingEntry()方法是NavigableMap接口中比较常用的方法之一,它会返回给定键大于等于的最小键值对。以下是ceilingEntry()方法的签名:

Map.Entry<K,V> ceilingEntry(K key);

其中,key是需要查找的键值。拿一个简短的例子来看,假设我们有一个NavigableMap对象,它存储的是球员的得分信息:

NavigableMap<Integer,String> scores = new TreeMap<>();
scores.put(60,"LeBron James");
scores.put(80,"Stephen Curry");
scores.put(90,"Kobe Bryant");
scores.put(95,"Michael Jordan");

我们可以使用ceilingEntry()方法查找大于等于85分的最小键值对:

Map.Entry<Integer,String> entry = scores.ceilingEntry(85);
System.out.println(entry.getKey() + ":" +entry.getValue());

输出如下:

90:Kobe Bryant

在这个例子中,ceilingEntry(85)返回了大于等于85分的最小键值对,也就是“90:Kobe Bryant”。

需要注意的是,在NavigableMap实现类中,如TreeMap、ConcurrentSkipListMap等,ceilingEntry()方法中的键必须和map中存储的键是同一类型,并且必须实现了Comparable接口或者传入了Comparator对象。

完整示例

为了更加直观地展示ceilingEntry()方法的使用,下面是一个完整的示例代码,其中,我们创建了一个名为PlayerScores的类来代表球员得分:

import java.util.NavigableMap;
import java.util.Map;
import java.util.TreeMap;

public class PlayerScores {
    private NavigableMap<Integer,String> scores;

    public PlayerScores(){
        scores = new TreeMap<>();
    }

    public void addPlayerScore(Integer score,String player){
        scores.put(score,player);
    }

    public void printScoresGreaterThan(Integer score){
        Map.Entry<Integer,String> entry = scores.ceilingEntry(score);
        while (entry != null){
            System.out.println(entry.getValue() + ":" + entry.getKey());
            entry = scores.higherEntry(entry.getKey());
        }
    }

    public staticvoid main(String[] args){
        PlayerScores ps = new PlayerScores();
        ps.addPlayerScore(60,"LeBron James");
        ps.addPlayerScore(80,"Stephen Curry");
        ps.addPlayerScore(90,"Kobe Bryant");
        ps.addPlayerScore(95,"Michael Jordan");
        ps.printScoresGreaterThan(85);
    }
}

在上述示例中,PlayerScores类内部封装了一个NavigableMap对象scores,并提供了一个addPlayerScore()方法来添加得分信息。同时,它还提供了一个printScoresGreaterThan()方法,来打印大于等于给定分数的球员得分信息。

在main()方法中,我们创建了一个PlayerScores对象ps,添加了四名球员的得分信息,并调用了printScoresGreaterThan(85)方法来打印大于等于85分的球员得分信息。

运行上述代码,输出如下:

Kobe Bryant:90
Michael Jordan:95

结论

本文详细介绍了Java中NavigableMap的ceilingEntry()方法的使用,通过这个方法我们可以方便地查找大于等于给定键的最小键值对。在使用该方法时,需要注意传入的键必须和存储在map中的键类型相同,且键必须实现了Comparable接口或者传入了Comparator对象。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程