Java Map类常用方法

关于Map集合中常用的方法:

void clear(); 清空Map

boolean containsKey(Object key); 判断Map中是否包含这样的key

boolean containsValue(Object value); 判断Map中是否包含这样的value

Set<Map.Entry<K,V>> entrySet();  返回此映射中包含的映射关系的Set视图

Object get(Object key);  通过key获取value

boolean isEmpty();  判断该集合是否为空

Set keySet();  获取Map中所有的key

Object put(Object key,Object value);  向集合中添加键值对

Object remove(Object key);  通过key将键值删除

int size();  获取Map中键值对的个数

Set keySet(); 获取Map中所有的key

Collection values(); 获取Map集合中所有的value

注意:存储在Map集合key部分的元素需要同时重写HashCode和equals方法(这个在之前的HashSet中讲过)。Map的实现类又包括HashMap,Hashtable和TreeMap等,首先看看HashMap,结合以下代码来看:

import java.util.*;public class MapTest{  public static void main(String[] args){    //1.创建Map集合    Map persons = new HashMap();   //HashMap的默认初始化容量是16,加载因子是0.75    //2.存储键值对    persons.put("10000","JACK");    persons.put("10000","TOM");    persons.put("10001","KING");    persons.put("10002","PIG");    persons.put("10003","LINDA");    persons.put("10004","KIDS");    //3.判断键值对的个数    //Map中的key是无序不可重复的,和HashSet相同    System.out.println(persons.size());   //5     //4.判断集合中是否包含这样的key    System.out.println(persons.containsKey("10000"));  //true    //5.判断集合中是否包含这样的value    System.out.println(persons.containsValue("JACK")); //false      //6.通过key获取value    String k="10001";    Object v=persons.get(k);    System.out.println(v);   //KING    //7.通过key删除键值对    persons.remove("10002");    System.out.println(persons.size());  //4    //8.获取所有的value    Collection values = persons.values();    Iterator it=values.iterator();    while(it.hasNext()){      System.out.println(it.next());    }    //9.获取所有的key后遍历    Set keys=persons.keySet();    Iterator it2=keys.iterator();    while(it2.hasNext()){      Object id=it2.next();      Object name=persons.get(id);      System.out.println(id+"-->"+name);    }    //10.entrySet() 将Map转换成Set集合    Set entrySet=persons.entrySet();    Iterator it3=entrySet.iterator();    while(it3.hasNext()){     System.out.println(it3.next());     }    }  }

上述代码中,

1.首先创建Map集合 persons,Map persons = new HashMap(); 这里注意HashMap的默认初始化容量是16,加载因子是0.75.

2.Object put(Object key,Object value);向集合中添加键值对,并使用size();方法获取Map中键值对的个数,这里输出键值对的个数为5,因为第一二个key重复,所以后面的键值对覆盖前面的键值对。我们可以通过System.out.println(persons.containsValue("JACK"));来验证,输出false,也就是键值对"10000","TOM"覆盖了键值对"10000","JACK"。

3.entrySet(); 将Map转换成Set集合,与第9个方法差不多,但是键与值之间只能用等号,所以一般不推荐使用,一般使用第9个方法那样的形式将Map转换成Set集合。

接着来看Hashtable,主要讲讲它的子类型Properties,它们之间的继承关系如下:

java.lang.Object

java.util.Dictionary<K,V>

java.util.Hashtable<Object,Object>

java.util.Properties

java.util.Properties;也是由key和value组成,但是key和value都是字符串类型。结合以下代码来看看Properties的主要方法。

import java.util.Properties;public class MapTest02{ public static void main(String[] args){ //1.创建属性类对象 Properties p=new Properties(); //2.存 p.setProperty("driver","oracle.jdbc.driver.OracleDriver"); p.setProperty("username","scott");       p.setProperty("username","tom"); p.setProperty("password","tiger"); p.setProperty("url","jdbc:oracle:thin:@192.168.1.100:1521:bjpowernode"); //3.取 String v1=p.getProperty("driver"); String v2=p.getProperty("username"); String v3=p.getProperty("password"); String v4=p.getProperty("url");  System.out.println(v1); System.out.println(v2); System.out.println(v3); System.out.println(v4); }}

编译运行后输出:

oracle.jdbc.driver.OracleDrivertomtigerjdbc:oracle:thin:@192.168.1.100:1521:bjpowernode

上述代码中,首先创建属性类对象p,然后使用setProperty()方法将键值对存进去,取值的方法为getProperty("key");(key为存进去的对应的字符串)。当key相同时,与HashMap中的相同,后面的键值对会覆盖前面的键值对。

最后来看TreeMap,TreeMap通过接口SortedMap实现。SortedMap中的key特点:无序不可重复,但是存进去的元素可以按照大小自动排序,之前讲过Map类的集合之所以可以实现自动排序,是因为key部分的元素实现了Comparable接口或单独写了一个比较器。key部分元素实现Comparable接口的代码如下:

import java.util.*;public class SortedMapTest01{ public static void main(String[] args){   //Map,key存储Product,value存储重量   SortedMap products=new TreeMap();   //准备对象   Product p1=new Product("西瓜",1.0);   Product p2=new Product("桃子",4.0);   Product p3=new Product("苹果",5.0);   Product p4=new Product("香蕉",2.0);   //添加   products.put(p1,8.0);   products.put(p2,3.0);   products.put(p3,4.0);   products.put(p4,10.0);   //遍历   Set keys=products.keySet();   Iterator it=keys.iterator();   while(it.hasNext()){     Object k=it.next();     Object v=products.get(k);     System.out.println(k+"--->"+v+"kg");   } }}class Product implements Comparable{ String name; double price; Product(String name,double price){   this.name=name;   this.price=price; } public String toString(){   return "Product[name="+name+",price="+price+"]"; } public int compareTo(Object o){   //p1.compareTo(p2);   double price1=this.price;   double price2=((Product)o).price;   if(price1<price2){     return 1;   }else if(price1>price2){     return -1;   }else{     return 0;   } }}

编译运行后输出:

Product[name=苹果,price=5.0]--->4.0kgProduct[name=桃子,price=4.0]--->3.0kgProduct[name=香蕉,price=2.0]--->10.0kgProduct[name=西瓜,price=1.0]--->8.0kg

key部分元素单独写比较器的代码如下:

import java.util.*;public class SortedMapTest02{ public static void main(String[] args){ SortedMap products=new TreeMap(new ProductPriceCompare());  Product p1=new Product("西瓜",2.0); Product p2=new Product("香蕉",3.0); Product p3=new Product("橘子",4.0); Product p4=new Product("菠萝",4.5);  products.put(p1,3.2); products.put(p2,6.5); products.put(p3,5.3); products.put(p4,4.3);  Set keys=products.keySet();   Iterator it=keys.iterator();   while(it.hasNext()){     Object k=it.next();     Object v=products.get(k);     System.out.println(k+"--->"+v+"kg");   } }  }class Product{ String name; double price; Product(String name,double price){   this.name=name;   this.price=price; } public String toString(){   return "Product[name="+name+",price="+price+"]"; }}class ProductPriceCompare implements Comparator{ public int compare(Object o1,Object o2){   double price1=((Product)o1).price;   double price2=((Product)o2).price;   if(price1>price2){     return 1;   }else if(price1<price2){     return -1;   }else {     return 0;   } }}

编译运行后输出:

Product[name=西瓜,price=2.0]--->3.2kgProduct[name=香蕉,price=3.0]--->6.5kgProduct[name=橘子,price=4.0]--->5.3kgProduct[name=菠萝,price=4.5]--->4.3kg

原文地址:https://www.cnblogs.com/naihuangbao/p/9444469.html

时间: 2024-11-05 12:07:53

Java Map类常用方法的相关文章

java File类常用方法

file类常用方法 delete()删除此抽象路径名表示的文件和目录. equals()测试此抽象路径名与给定对象是否相等. exists()测试此抽象路径名表示的文件或目录是否存在. getName()返回由此抽象路径名表示的文件或目录的名称. isDirectory()测试此抽象路径名表示的文件是否一个目录 isFile()测试此抽象路径名表示的文件是否是标准文件. length()返回此抽象路径名表示的文件长度. mkdir()创建此抽象路径名指定的目录.

Java File类常用方法及实例

创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false.mkdir()  在指定位置创建一个单级文件夹.mkdirs()  在指定位置创建一个多级文件夹.renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹. 删除:delete()  删除文件或者一个空文件夹,不能删除非空文件

八、java常用类

目录 一.字符串相关类 String类 StringBuffer类 二.基本数据类型包装类 三.Math类 四.File类 五.枚举类 一.字符串相关类 1.String类 java.lang.String代表不可变的字符序列 “xxxx”为该类的一个对象 String类常见的构造方法: String(String original)//创建一个String对象为original的拷贝 String(char90 value)//用一个字符数组创建一个String对象 String(char[]

java中map类使用

Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.      Map的接口      Map---实现Map      Map.Entry--Map的内部类,描述Map中的按键/数值对.      SortedMap---扩展Map,使按键保持升序排列         关于怎么使用,一般是选择Map的子类,而不直接用Map类.      下面以HashMap为例.      public     static     void     main(Strin

Java属性类:Properties的常用方法

Properties类本身是Hashtable类的子类,也是按照key-value的形式存放数据的. 设置和取得属性: public class PropertiesDemo01{ public static void main(String args[]){ Properties pro = new Properties() ; // 创建Properties对象 pro.setProperty("BJ","BeiJing") ; // 设置属性 pro.setP

JavaScript中模拟实现Java的集合类Map的常用方法

JavaScript中模拟实现Java的集合类Map的常用方法 (function Map(){ var size = 0, map = {}, strundefined; function MapCache() { } MapCache.prototype.put = function (key, value){ if ( key === null || key === undefined){ throw new Error(" null or undefined is not a illeg

探究Java中Map类

Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部类,描述Map中的按键/数值对.       SortedMap---扩展Map,使按键保持升序排列           关于怎么使用,一般是选择Map的子类,而不直接用Map类.       下面以HashMap为例.       public     static     void     ma

java Map及Map.Entry详解

Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法. keySet()方法返回值是Map中key值的集合:entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry. Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>.它表示Map中的一个实体(一个key-value对).接口中有getKey(),getValue方法. 由以上可以得出,遍历

java Map排序问题

java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它们都是Map的直接子类.java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个 Map中不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Key是 唯一的,而value不唯一.如果考虑到存 取效率的话,建议使用HashMap数据结构,而