JAVA集合框架——图

来源:互联网 发布:桌面日历软件 编辑:程序博客网 时间:2024/06/04 01:19

JAVA集合框架

Java集合框架——图


1.图

图是一种依照键值存储元素的容器。键值类似于下标,图的键值可以使任意类型的对象。需要注意的是,图中不能存在重复的键值,每个键值都对应一个值。一个键值与其对应的值构成了一个条目,图内所存储的元素便是这个条目。集合框架中,图有三种类型,包括:散列图HashMap,链式散列图LinkedHashMap以及树形图TreeMap。这些图的通特性都定义在Map接口中。以下便是Map接口中的具体方法。


更新方法

方法 功能 void clear() 清空图存储的所有条目 V put(K key,V value) 将一个键值与值的映射添加到图中 V remove(Object Key) 删除图中指定键值的条目 void putAll(Map m) 将所有来自图m的条目添加到图中去

查询方法

方法 功能 boolean containsKey(Object Key) 如果图包含指定键值对应的条目则返回true boolean containsValue(Object Value) 将图中一个或多个键值映射到特定值返回true boolean isEmpty() 若图为空则返回true int sieze() 返回图中的条目个数

此外我们还可以通过KetSet()方法来获得一个包含图中键值的规则集,也可以使用values()方法会的一个包含图中值的集合。方法entrySet()返回一个实现Map.Entry

1.1 链式散列图

LinkedHashMap类用链表实现来扩展HashMap类,支持图中条目的排序。在LinkedHashMap中,元素既可以按照他们的插入顺序为排序方式,也可以按照它们被最后一次访问时的顺序进行排序,从最早到最晚。无参构造法是以插入顺序来创建LinkedHashMap对象的,若要按照访问顺序来创建LinkedHashMap对象,需要调用LinkedHashMap(initialCapacity, loadFactor, true)方法。

1.2 树形图

TreeMap在遍历好排序的键值对是具有很高的效率。键值可以使用Comparable接口或者Comparator接口来排序。如果使用无参构造方法创建一个TreeMap对象,假设元素实现了Comparable接口,则可以使用Comparable接口中的compareTo方法对图内的元素进行比较,并进行排序。

2. 实例:替换单词

存在一段文本需要解译,输入具体的解译信息,然后完成自动单词矫正。举例如下:

  • 解译信息
解码后 解码前 from fiwo hello difh mars riwosf earth fnnvk like fiiw

输入START时程序读取解译信息,输入END为停止接受解译信息标志;再次输入START为输入解译文本的标志。最后输出解译后的文本内容,若输入文本中无法检索到对应解译信息的内容时,则不进行替换,直接输出文本内容具体代码如下所示。

import java.util.*;public class hashmapTest{  public static void main(String[] args){    Map<String,String> hashmap=new HashMap<String,String>();    List<String> wordslist=new ArrayList<String>();    Scanner input=new Scanner(System.in);    Collections.addAll(wordslist,input.nextLine().split(" "));    /*输入解译信息并以START和END为标志*/    if(wordslist.get(0).compareTo("START")==0){        wordslist.clear();        boolean mark=true;        while(mark){            Collections.addAll(wordslist,input.nextLine().split(" "));            if(wordslist.get(0).compareTo("END")==0)              mark=false;            else{                hashmap.put(wordslist.get(1),wordslist.get(0));//将解译信息存放在散列图中                wordslist.clear();            }        }    }    wordslist.clear();    Collections.addAll(wordslist,input.nextLine().split(" "));    /*识别输入文本*/    if(wordslist.get(0).compareTo("START")==0){        wordslist.clear();        Collections.addAll(wordslist,input.nextLine().split(" "));    }    /*输出解译后的文本信息*/    for(int i=0;i<wordslist.size();i++){        if(hashmap.containsKey(wordslist.get(i)))          System.out.println(hashmap.get(wordslist.get(i)));        else System.out.println(wordslist.get(i));    }     }}
0 0