你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。 标准的Map访问方法如下: Set keys = map.keySet( ); if(keys != null) { Iterator iterator = keys.iterator( ); while(iterator.hasNext( )) { Object key = iterator.next( ); Object value = map.get(key); ;… ;} } 然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。 幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下: Set entries = map.entrySet( ); if(entries != null) { Iterator iterator = entries.iterator( ); while(iterator.hasNext( )) { Map.Entry entry =iterator.next( ); Object key = entry.getKey( ); Object value = entry.getValue(); ;… } }
举个例子: Map map = new HashMap(); 先拿所有的键: Integer[] keys = map.keySet().toArray(new Integer[0]); 然後随机一个键,找出该值: Random random = new Random(); Integer randomKey = keys[random.nextInt(keys.length)]; String randomValue = map.get(randomKey); //第一种:普遍使用,二次取值 System.out.println("通过Map.keySet遍历key和value:"); for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); } //第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());}
map迭代,需要使用map的key,问度娘后记录使用方法如下,希望更多人能学习到.
public class MyUtil1 {
public static void
iteratorMap1(Map m) {
Set
set=m.keySet();//用接口实例接口
Iterator iter =
set.iterator();
while (iter.hasNext())
{//遍历二次,速度慢
String
k=(String)iter.next();
System.out.println(k +"="+ m.get(k));
//System.out.println(iter.next()+"="+
m.get(iter.next()));
//因为指针判断下一个有没有值 iter.next是当前对象
但是 m.get(iter.next())是下一个值
}
public static void iteratorMap(Map m){
Iterator
i=m.entrySet().iterator();
while(i.hasNext()){//只遍历一次,速度快
Map.Entry
e=(Map.Entry)i.next();
System.out.println(e.getKey()+"="+e.getValue());
//System.out.println(e.setValue(""));//返回value的值
}
}
在Java中,定义方法返回Map跟返回其他类型一样,只需要指定方法的返回类型为Map即可。
具体实现如下:
public Map doSomething(){...}
Map是Java中的一个键值对接口,开发中经常会用到。Map接口提供三种collection
视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection
视图上返回其元素的顺序。Map接口的实现子类有很多,其中较为常用的有HashMap, Hashtable,TreeMap,ConcurrentHashMap等。
java根据Map的值(value)取键(key) 的实现方法有4种,分别为: (1)使用for循环遍历 (2)使用Iterator迭代器 (3)使用KeySet迭代 (4)使用EnterySet迭代 下面为以上4种方法具体实现的代码: 1、使用for循环遍历 public static Object getKey(HashMap map, String v) { String key = ""; for (Map.Entry m :map.entrySet()) { if (m.getValue().equals(v)) { key = m.getKey(); }} return key; } 2、使用Iterator迭代器 public static Object getKey(HashMap map, String v) { Set set = map.entrySet(); Iterator iterator=set.iterator(); String key = ""; while (iterator.hasNext()) { Map.Entry enter = (Entry) iterator.next(); if (enter.getValue().equals(v)) { key = enter.getKey(); }} return key; } 3、使用KeySet迭代 public static Object getKey(HashMap map, String v) { Iterator it = map.keySet().iterator(); while (it.hasNext()) { String key = it.next().toString(); if ((String) map.get(key).equals(v)) return key; } return null; } 4、使用EnterySet迭代 public static Object getKey(HashMap map, String v) { String key = ""; Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Entry) it.next(); Object obj = entry.getValue(); if (obj != null && obj.equals(value)) { key = (String) entry.getKey(); }} return key; } 扩展资料: java获取map的key和value的方法: (1) 通过map.keySet()方法,先获取map的key,然后根据key获取对应的value。 for(String key : map.keySet()){ String value = map.get(key); System.out.println(key+" "+value); } Iterator iter = map.keySet().iterator(); while(iter.hasNext()){ String key=iter.next(); String value = map.get(key); System.out.println(key+" "+value); } (2)通过map.entrySet()方法,循环map里面的每一对键值对,然后获取key和value。 for(Entry vo : map.entrySet()) { vo.getKey(); vo.getValue(); System.out.println(vo.getKey()+" "+vo.getValue()); } Iterator> iter = map.entrySet().iterator(); while(iter.hasNext()){ Entry entry = iter.next(); String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+" "+value); } 参考资料来源:JAVA官方文档-Map
package com.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.List;public class conmysql { // 加个静态的返回值字段 private List recost; public List getRecost() { return recost; } public void setRecost(List recost) { conmysql.recost = recost; } public void consql(String s,String col){ String cost; recost = new ArrayList(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } //链接数据库 try { Connection con=DriverManager.getConnection("jdbc:mysql://192.168.1.250:3306/shop","fmrom","fmrom"); if(!con.isClosed()){ Statement st=con.createStatement(); ResultSet rs=st.executeQuery(s); while(rs.next()){ cost = rs.getString(col); // 将cost放入集合recost; recost.add(cost); System.out.print("数据库中的价格:"+cost+" "); } } con.close(); } catch (SQLException e) { e.printStackTrace(); } } }通过new conmysql().getRecost()可以拿到结果cost的集合,这样可以吗?
你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。标准的Map访问方法如下:
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;....
;}
}
然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。
幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;....
}
}
尽管增加了一行代码,我们却省略了许多对Map不必要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。
Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对 Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了Map.Entry类来转换,好,现在就用这个类来作文章,我具体写了一个方法。
代码:
/**
*
方法名称:getSortedHashtable
*
参数:Hashtable h 引入被处理的散列表
*
描述:将引入的hashtable.entrySet进行排序,并返回
*/
public static Map.Entry[] getSortedHashtable(Hashtable h){
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries,new Comparator(){
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry)arg0).getKey();
Object key2 = ((Map.Entry)arg1).getKey();
return ((Comparable)key1).compareTo(key2);
}
});
return entries;
}
调用这个方法:
Map.Entry[] set = getSortedHashtable(t);
//perportyTable
for (int i=0;i<set.length;i++){
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
方法1:keySet() HashMap hashmp = ne HashMap(); hashmp.put("aa", "111"); Set set = hashmp.keySet(); Iterator iter = set.iterator(); while (iter.hasNext()) { String key = (String) iter.next(); // printkey} // traverse for (String key : list.get(pos).keySet() ) { myKey = key;} 方法2:entrySet() HashMap map; Iterator i = map.entrySet().iterator(); while (i.hasNext()) { Object obj = i.next(); String key = obj.toString();} // or while (i.hasNext()) { Entry entry = (java.util.Map.Entry)it.next(); entry.getkey(); entry.getValue();} 扩展资料: JavaMap集合 1.Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value.key值还决定了存储对象在映射中的存储位置。 但不是key对象本身决定的,而是通过散列技术进行处理,可产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置.Map集合包括Map接口以及Map接口所实现的类。 2.Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value.key值还决定了存储对象在映射中的存储位置。 但不是key对象本身决定的,而是通过散列技术进行处理,可产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置.Map集合包括Map接口以及Map接口所实现的类。 参考资料:博客园-Map / HashMap 获取Key值的方法
你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦?使用Map.Entry类,你可以得到在同一时间得到所有的信息。
标准的Map访问方法如下:
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;…
;}
}
然后,这个方法有一个问题。从Map中取得关键字之后,我们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。
幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。
接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,因此,上面的代码可以被组织得更符合逻辑。举例如下:
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;…
}
}
尽管增加了一行代码,我们却省略了许多对Map不必要的"get"调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可以使用它修改map里面的值。
Hashtable内部排列的方式是散列排布,所以当输出信息时会是无序的。为了能保证输出的数据按照顺序排列,不要渴望用java自带的函数来对
Hashtable对象进行调整处理。当我们获取Hashtable里的KEY和VALUE时,一般都运行了Map.Entry类来转换,好,现在就用这
个类来作文章,我具体写了一个方法。
代码:
/**
* 方法名称:getSortedHashtable
* 参数:Hashtable h 引入被处理的散列表
* 描述:将引入的hashtable.entrySet进行排序,并返回
*/
public static Map.Entry[] getSortedHashtable(Hashtable h){
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);
Arrays.sort(entries,new Comparator(){
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry)arg0)。getKey();
Object key2 = ((Map.Entry)arg1)。getKey();
return ((Comparable)key1)。compareTo(key2);
}
});
return entries;
}
调用这个方法:
Map.Entry[] set = getSortedHashtable(t);
//perportyTable
for (int i=0;i<set.length;i++){
System.out.println(set[i].getKey()。toString());
System.out.println(set[i].getValue()。toString());
}
public static void main(String[] args) { Map map = new HashMap(); map.put("key1", "value1"); Set keySet = map.keySet(); int i = map.size()-1; Map mapKey = new HashMap(); //将原来MAP的VALUE放入新的MAP的VALUE里面 mapKey.put(i, entry.getValue()); i--; //打印KEY值 System.out.println(mapKey.get(2)); //打印VALUE值 System.out.println(mapValue.get(0)); } 面向对象 Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。 每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。 以上内容参考:百度百科-Java
在java map中取出键值有以下两种方法: 1.第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Ma ublic class Test { public static void main(String[] args) { // TODO Auto-generated method stub Map map=new HashMap(); map.put("id", "sunny"); map.put("value", "syl"); System.out.println(map.get("id")) System.out.println(map.get("value")); } 2.第二种方法:遍历 import java.util.HashMap; import java.util.Map; import java.util.Set ublic class Test { public static void main(String[] args) { Map map=new HashMap(); map.put("id", "sunny"); map.put("value", "syl"); Set get = map.keySet(); for (String test:get) { System.out.println(test+","+map.get(test)); } }
map.put("123",newfloat[]{11,11,11}); 按照已有的代码,存进去的时候,new一个float数组,直接传值就可以。 或 Map sMap = new HashMap(); String[] strs = {"1","2"}; sMap.put(strs, "map的键值可以为数组"); System.out.println(sMap.get(strs));//---->map的键值可以为数组。 扩展资料: 一个数组中的所有元素具有相同的数据类型(在C、C++、Java、pascal中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。 参考资料来源:百度百科-数组
Map有个values()方法 public static void main(String[] args) { Map map = new HashMap(); //定义Map集合对象 map.put("apple", "新鲜的苹果"); //向集合中添加对象 map.put("computer", "配置优良的计算机"); map.put("book", "堆积成山的图书"); Collection values = map.values(); //获取Map集合的value集合 for (Object object : values) { System.out.println("键值:" + object.toString()); //输出键值对象 }}
是不是就第一次出现“:”作为分割,后面的不管了? 你的字符串形式都和这个差不多的吧,给个不是太好的方法: HashMap hm = new HashMap(); String s = "Date: Tue, 14 Sep 2010 13:51:13 GMT"+"Server: Apache"+"Cache-Control: max-age=86400"; Pattern p = Pattern.compile("(Date.*?)(Server.*?)(Cache-Control.*)"); Matcher m = p.matcher(s); while(m.find()) { String[] test = m.group(1).split(":",2); hm.put(test[0], test[1]); test = m.group(2).split(":",2); hm.put(test[0], test[1]); test = m.group(3).split(":",2); hm.put(test[0], test[1]); }
hm已是一个HashMap的引用。
如果你知道当前的这个key,可以通过hm.get(key)方法来获得value。
获得key的方法hm.keySet();因为你不知道key是哪个其实该方法就是获得一个key的集合。
具体可以结合以下例子看看,里面有个迭代器用于遍历的。
Set s=hm.keySet();//通过keySet方法可获得所有key的集合,放在一个容器Set里面。
Iterator it=s.iterator();//获得一个迭代器引用it,通过s.iterator方法好比使“指针”指向
//set里面的第一个元素的位置
while(it.hasNext())//set里面如果有下一个
{
Integer key=it.next();//返回当前set中的这个元素(因为set中都是放的key,“指针”指向下一个
System.out.println(hm.get(key));//利用hm.get(key)方法获得该key对应的value
}
仅供参考~
hm已是一个HashMap的引用。
如果你知道当前的这个key,可以通过hm.get(key)方法来获得value。
获得key的方法hm.keySet();因为你不知道key是哪个其实该方法就是获得一个key的集合。
具体可以结合以下例子看看,里面有个迭代器用于遍历的。
Set s=hm.keySet();//通过keySet方法可获得所有key的集合,放在一个容器Set里面。
Iterator it=s.iterator();//获得一个迭代器引用it,通过s.iterator方法好比使“指针”指向
//set里面的第一个元素的位置
while(it.hasNext())//set里面如果有下一个
{
Integer key=it.next();//返回当前set中的这个元素(因为set中都是放的key,“指针”指向下一个
System.out.println(hm.get(key));//利用hm.get(key)方法获得该key对应的value
}
Java中遍历Map对象的4种方法: 1、通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时。 2、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值。 3、如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。 4、通过Map.entrySet使用iterator遍历key和value。 扩展资料: 关于JAVA的遍历知识补充: 1、list和set集合都实现了Iterable接口,所以他们的实现类可以使用迭代器遍历,map集合未实现该接口,若要使用迭代器循环遍历,需要借助set集合。 2、使用EntrySet 遍历,效率更高。 参考资料: 百度百科--Map(映射)
Map的一般用法
1.声明一个Map :
Map map = new HashMap();
2 .向map中放值 ,注意: map是key-value的形式存放的,如:
map.put("sa","dd");
3 .从map中取值 :
String str = map.get("sa").toString,
结果是: str = "dd'
4 .遍历一个map,从中取得key和value :
Map m= new HashMap();
for(Object obj : map.keySet()){
Object value = map.get(obj );
}
public class Demo1 {public static void main(String[] args) {Map map1 = new HashMap();map1.put("key1", "values1");Map map2 = new HashMap();map2.put("key2", "values2");map1.putAll(map2);System.out.println(map1);返回值是{key2=values2, key1=values1} 扩展资料Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。 用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现均支持Java applet Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。 Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。 本书以进销存管理系统、企业内部通信软件、企业人事管理系统、酒店管理系统、图书馆管理系统、企业快信、欣想电子商城、企业门户网站、BBS系统和手机网络游戏等10个实际项目开发程序为案例,从软件工程的角度出发,按照项目的开发顺序,系统、全面地介绍了J2SE、J2EE和J2ME项目的开发流程。 参考资料:Java项目开发全程实录百度百科
1、map.entrySet()获取键值对列表,即a=1;2、map.values()获取value集合3、map.keySet()获取key集合;并通过key获取对应value的值public static void main(String[] args) {java.util.Map map = new HashMap();map.put("a", "1");map.put("b", "2");map.put("c", "3");map.put("d", "4");map.put("e", "5");map.put("f", "6");for (Entry s : map.entrySet()) {System.out.println("键值对:" + s);}for (String s : map.values()) {System.out.println("values:" + s);}for (String s : map.keySet()) {System.out.println("key:" + s);System.out.println("values:" + map.get(s));}System.out.println(map.getOrDefault("g", "28342849284923"));}
HashMap和ArrayList结合起来用,向HashMap中存值时 把name存入ArrayList中:
HashMap a = new HashMap();
ArrayList al = new ArrayList();
a.put("name1", "abcdef"); // key是name,value是字符串abcdef
al.add("name1");
a.put("name2","me");
al.add("name2");
a.put("name3","you");
al.add("name3");
a.put("name4","he");
al.add("name4");
for(int i=0;i<al.size();i++){
System.out.println(a.get(al.get(i)));
}