java怎么获取map的key

java怎么获取map的key,第1张

java 获取map中所有的key和value值

javautilIterator 对 collection 进行迭代的迭代器。

javautilIterator it = mapentrySet()iterator();

while(ithasNext()){

javautilMapEntry entry = (javautilMapEntry)itnext();

entrygetKey() //返回对应的键

entrygetValue() //返回对应的值

}

以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,

然后根据key,依次从Map中去数据,基本方式如下:

Map<String,String> testData = new HashMap<String, String>();

Set<String> keys = testDatakeySet();

for(String key :keys){

Systemoutprintln(key+" "+testDataget(key));

}

上述其中是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现还Map接口中还有一个Entry<K,V>的接口,对应的还有一个 Set<MapEntry<K, V>> entrySet();方法。

也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法:

Set<Entry<String, String>> entries = testDataentrySet();

for (Entry<String, String> entry : entries) {

Systemoutprintln(entrygetKey()+":"+entrygetValue());

}

当少量的数据时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种快。

当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。

众所周知,mybatis的传入参数可以是各种Java的基本数据类型:包含int,String,Date等。基本数据类型作为传参,只能传入一个。通过#{参数名} 即可获取传入的值 ,复杂数据类型:包含JAVA实体类、Map。通过#{属性名}或#{map的KeyName}即可获取传入的值,但是如果想传入一个collection怎么办呢?

经查找后发现可以使用mapper配置文件中的foreach语句,借用别人写的文章:

37 foreach

对于动态SQL 非常必须的,主是要迭代一个集合,通常是用于IN 条件。List 实例将使用“list”做为键,数组实例以“array” 做为键。

foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。

注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。

这个部分是对关于XML配置文件和XML映射文件的而讨论的。下一部分将详细讨论Java API,所以你可以得到你已经创建的最有效的映射。

371参数为array示例的写法略372参数为list示例的写法

接口的方法声明:

Java代码

public List getStudentListByClassIds_foreach_list(List classIdList);

动态SQL语句:

Xml代码

<!-- 72 foreach(循环List参数) - 作为where中in的条件 -->

SELECT STSTUDENT_ID,

STSTUDENT_NAME,

STSTUDENT_SEX,

STSTUDENT_BIRTHDAY,

STSTUDENT_PHOTO,

STCLASS_ID,

STPLACE_ID

FROM STUDENT_TBL ST

WHERE STCLASS_ID IN

#{classIdList}

测试代码,查询学生中,在20000001、20000002这两个班级的学生:

Java代码

@Test

public void test7_2_foreach() {

ArrayList classIdList = new ArrayList();

classIdListadd("20000001");

classIdListadd("20000002");

List list = thisdynamicSqlMappergetStudentListByClassIds_foreach_list(classIdList);

for (StudentEntity e : list) {

Systemoutprintln(etoString());

}

}

这个是ItEye上的一篇文章,其中配置文件中的parameterType是可以不配置的,mybatis会自动传入的。当您想传入collection时,并不能直接传入collection对象,要将其先转换为list,然后才能传入。因为mybatis生成SQL语句遍历list时是需要用到get()方法的,而这个方法只在List中才有,Collection里是没有的。以上的配置在Mybitis官方文档中的“动态SQL”也可以找到。

参数示例:

根据班级ID查询教师列表

xml文件

[html] view plaincopy

select from Teacher where c_id=#{id}

java代码

[java] view plaincopy

List tList = teacherMapperselectTeacher(2);

for (Teacher entityTemp : tList) {

Systemoutprintln(entityTemptoString());

}

JAVA实体类型参数示例:

[html] view plaincopy

select from Teacher where c_id=#{id}

[java] view plaincopy

java代码

Teacher queryTeacher=new Teacher();

queryTeachersetId(2);

List tList = teacherMapperselectTeacher(queryTeacher);

for (Teacher entityTemp : tList) {

Systemoutprintln(entityTemptoString()); }

Map参数示例:

[html] view plaincopy

select from Teacher where c_id=#{id} and sex=#{sex}

[java] view plaincopy

java代码

Map map=new HasMap();

mapput("id","2");

mapput("sex","男");

List tList = teacherMapperselectTeacher(map);

for (Teacher entityTemp : tList) {

Systemoutprintln(entityTemptoString()); }

另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解

示例:

接口方法

[java] view plaincopy

public List selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex);

XML文件

[html] view plaincopy

select from Teacher where c_id=#{id} and sex=#{sex}

测试代码

[java] view plaincopy

List tList = teacherMapperselectTeacher("2","男");

for (Teacher entityTemp : tList) {

Systemoutprintln(entityTemptoString());

// 注意此处可以是任何集合类,不限于列表

以上就是关于java怎么获取map的key全部的内容,包括:java怎么获取map的key、怎么获得Map<String,Date>中 String或Date类型、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10071972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存