Java 简明教程
Java - SortedMap Interface
SortedMap 接口扩展了 Map。它确保项按升序键顺序维护。
调用地图中没有项时,几个方法会引发 NoSuchElementException。当 object 与地图中的元素不兼容时,引发 ClassCastException。当尝试使用空对象而地图中不允许出现空值时,引发 NullPointerException。
SortedMap Interface Methods
SortedMap 声明的方法汇总在以下表格中 −
Sr.No. |
Method & Description |
1 |
Comparator comparator( ) 返回调用排序映射的比较器。如果为调用映射使用自然排序,则返回 null。 |
2 |
Object firstKey( ) 返回调用映射中的第一个键。 |
3 |
SortedMap headMap(Object end) 返回键小于 end 的那些映射项的排序映射。 |
4 |
Object lastKey( ) 返回调用映射中的最后一个键。 |
5 |
SortedMap subMap(Object start, Object end) 返回一个映射,其中包含那些键大于或等于 start 且小于 end 的项。 |
6 |
SortedMap tailMap(Object start) 返回一个映射,其中包含那些键大于或等于 start 的项。 |
Operations on SortedMap Interface
Creating a SortedMap
TreeMap class实现了 SortedMap 接口。我们可以使用 TreeMap 构造函数创建 SortedMap 实例。
以下是创建 sortemap 实例的语法:
// Create a sorted map
SortedMap<String, Double> map = new TreeMap<>();
在此,我们正在创建 String 与 Double 值的排序映射。此映射将根据字母数字顺序存储键。
Adding Value to a SortedMap
SortedMap 提供 put() 方法,可将其用于向排序映射实例添加值。每当向映射中添加值时,映射会根据输入的键自动对自己进行排序。
public V put(K key,V value)
其中,键值对表示彼此关联的键和值,并存储在映射中。如果此键已与某个值关联,则返回该值,并使用新值与该键关联;否则,返回一个 null 值。
// Put elements to the map
map.put("Zara", Double.valueOf(3434.34));
map.put("Mahnaz", Double.valueOf(123.22));
map.put("Ayan", Double.valueOf(1378.00));
map.put("Daisy", Double.valueOf(99.22));
map.put("Qadir", Double.valueOf(-19.08));
Getting value from a SortedMap
使用 get(key) 方法,我们可以检索与某个键关联的值。
public V get(Object key)
如果该键在映射中不存在,则返回 null;否则,返回与所提供的键关联的值。
Double value = map.get("Qadir");
System.out.print("Qadir: " + value);
Updating value of a SortedMap
我们可以通过再次使用相同的键调用 put() 方法来更新已排序映射的现有值。作为已排序映射,根据新输入键(们) 的排序顺序,将再次对条目排序。
// Put elements to the map
map.put("Zara", Double.valueOf(3434.34));
map.put("Mahnaz", Double.valueOf(123.22));
map.put("Zara", Double.valueOf(1378.00));
SortedMap 将考虑最新的 put() 方法调用,以用具有相同键的条目更新条目。
Deleting a value from a sortedmap
使用 remove(key) 方法,我们可以移除与键关联的键和值。
public V remove(Object key)
如果该键在映射中不存在,则返回 null;否则,从映射中移除键值关联并相应地对映射进行排序。
Double value = map.remove("Qadir");
System.out.print("Qadir removed with value: " + value);
Iterating sortedMap
SortedMap 条目可以轻松进行导航。SortedMap 提供了一个 entrySet() 函数,它以集合的形式提供所有条目。
public Set<Map.Entry<K,V>> entrySet()
其中 Map.Entry
包含要迭代的键值对。
// Get a set of the entries
Set<Map.Entry<String, Double>> set = map.entrySet();
// Get an iterator
Iterator<Map.Entry<String, Double>> i = set.iterator();
// Display elements
while(i.hasNext()) {
Map.Entry<String, Double> me = i.next();
System.out.println(me.getKey());
}
Examples of SortedMap Interface
Example 1
以下是一个显示 TreeMap 如何用于获取 SortedMap 值的示例 -
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
public class MapDemo {
public static void main(String args[]) {
// Create a hash map
SortedMap<String, Double> map = new TreeMap<>();
// Put elements to the map
map.put("Zara", Double.valueOf(3434.34));
map.put("Mahnaz", Double.valueOf(123.22));
map.put("Ayan", Double.valueOf(1378.00));
map.put("Daisy", Double.valueOf(99.22));
map.put("Qadir", Double.valueOf(-19.08));
// Get a set of the entries
Set<Map.Entry<String, Double>> set = map.entrySet();
// Get an iterator
Iterator<Map.Entry<String, Double>> i = set.iterator();
// Display elements
while(i.hasNext()) {
Map.Entry<String, Double> me = i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}
}
Ayan: 1378.0
Daisy: 99.22
Mahnaz: 123.22
Qadir: -19.08
Zara: 3434.34
Example 2
以下是一个显示 TreeMap 如何用于设置 SortedMap 值的示例 -
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
public class MapDemo {
public static void main(String args[]) {
// Create a hash map
SortedMap<String, Double> map = new TreeMap<>();
// Put elements to the map
map.put("Zara", Double.valueOf(3434.34));
map.put("Mahnaz", Double.valueOf(123.22));
map.put("Ayan", Double.valueOf(1378.00));
map.put("Daisy", Double.valueOf(99.22));
map.put("Qadir", Double.valueOf(-19.08));
// Get a set of the entries
Set<Map.Entry<String, Double>> set = map.entrySet();
// Get an iterator
Iterator<Map.Entry<String, Double>> i = set.iterator();
// Display elements
while(i.hasNext()) {
Map.Entry<String, Double> me = i.next();
me.setValue(me.getValue() * 10);
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}
}
Ayan: 13780.0
Daisy: 992.2
Mahnaz: 1232.2
Qadir: -190.79999999999998
Zara: 34343.4
Example 3
以下是一个显示 TreeMap 如何用于获取分类映射项的键的示例 -
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
public class MapDemo {
public static void main(String args[]) {
// Create a hash map
SortedMap<String, Double> map = new TreeMap<>();
// Put elements to the map
map.put("Zara", Double.valueOf(3434.34));
map.put("Mahnaz", Double.valueOf(123.22));
map.put("Ayan", Double.valueOf(1378.00));
map.put("Daisy", Double.valueOf(99.22));
map.put("Qadir", Double.valueOf(-19.08));
// Get a set of the entries
Set<Map.Entry<String, Double>> set = map.entrySet();
// Get an iterator
Iterator<Map.Entry<String, Double>> i = set.iterator();
// Display elements
while(i.hasNext()) {
Map.Entry<String, Double> me = i.next();
System.out.println(me.getKey());
}
}
}
Ayan
Daisy
Mahnaz
Qadir
Zara