大神们,请详解一下下图中的java代码,尤其是红色区域的意思以及用法,先谢谢了~

如题所述

第1个回答  2014-03-25
cacheMap.keySet()是得到map的key集合.iterator()得到一个可供遍历的iterator(),
这里的k就是map里key的值
cacheMap.get(k)得到MAP中key为k的value,.isValidate()验证,没通过验证则删除map中该元素!追问

非常感谢,一看你的回复我就懂了,呵呵~

第2个回答  2014-03-25
map.keyset 是获取此map的key的集合
iterator 是获取集合的迭代器
建议去看一下map的帮助文档就可以
不明白的话可以私聊 直至满意!
希望可以采纳!
第3个回答  2014-03-25
第一个红线 得到迭代器 用于遍历Map

第二个红线 判断 如果 map中的 get(k) 的 isValidate() 的结果为false 则从这个map中删除这对键值对
第4个回答  2014-03-25
第一个红框框中的意思是 获取cacheMap中的key的集合
第二个红框框的意思是 如果这个k 存在于cacheMap中的key 那么就删除cacheMap中key等于k的一组值..
第5个回答  2014-03-25
cacheMap是一个Map对象嘛,keySet方法返回一个Set对象,Set对象实现了Collection接口,iterator返回一个Iterator对象,Iterator就是迭代器嘛,就可以遍历Map对象了,if里面是一个判断啊,然后删掉Map对象中不符合条件的对象
第6个回答  2014-03-25
解释下画红线部分如下:
1、cacheMap.keySet().iterator();
这句代码的意思是得到cacheMap这个Map集合的迭代器(且是key集合的迭代器,因为Map集合是由key和value组成的);这行下面的代码通过得到的这个迭代器对cacheMap进行了遍历;
2、if(! cacheMap.get(k).isValidate()){
cacheMap.remove(k);
}
这几行代码的意思是,通过key从cacheMap集合中取出对应的value(也就是与key对应的SNode对象),然后调用取到的SNode对象的isValidate方法进行验证(从字面意思理解是验证的意思),如果isValidate方法返回值为false的话,则从cacheMap集合中删除之前取到的SNode对象。

之后的代码 cacheMap.put(key,new SNode(obj)); 则是向缓存集合cacheMap中添加一个键值对,人后返回添加的Value对象obj。本回答被提问者和网友采纳

JAVA 中static,final的用法最好有个例子 说明一下?急
内部类的其它用法请参阅Think in Java中的相关章节,此处不作详解。 二.finalfinal成员 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也...

数据结构—二叉树的4种遍历方式详解以及Java代码的完整演示
以下代码添加到LinkedBinaryTree类中。\/***保存遍历出来的节点数据*\/ThreadLocal<StringBuilder>threadLocal=ThreadLocal.withInitial(StringBuilder::new);\/***先序遍历,提供给外部使用的api**@return遍历的数据*\/publicStringtoPreorderTraversalString(){\/\/如果是空树,直接返回空if(isEmpty()){returnnull;}\/\/从根节...

Java中的finalize详解
看来之所以要有finalize( ) 是由于你可能在分配内存时 采用了类似C语言中的做法而非Java中的通常做法 这种情况主要发生在使用 本地方法 的情况下 它是在Java中调用非Java代码的一种方式 本地方法目前只支持C和C++ 但它们可以调用其它语言写的代码 所以你实际上可以调用任何代码 在非Java代码中 也许会...

java中void是没有返回值,那么,没有返回值到底什么意思,求详解
要想理解没有返回值,首先得从有返回值来说,有返回值就是值调用这个方法之后,这个方法结束后,它会得到一个实实在在的结果,这个结果是可以为我们直接调用使用的,故而可以知道,没有返回值就是指这个方法它只提供处理一段逻辑的过程,但是处理完了之后是不会有实在的结果的,或者说这个处理结果不是...

朋友们,大家好!我是一个JAVA语言的初学者.
第二步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全...

Java中可以直接调用类中静态方法,不用实例化么,详解!原理
被static修饰过的都是随着类的初始化后就产生了,在堆内存中都有一块专门的区域来存放,所以只需要类名点方法名或者变量名即可。而非静态的就必须通过类的对象去调相应的。就像是你想要红色的衣服,你必须是从穿红色的衣服的人的身上拿过来才行,所以你必须找到穿红色衣服的人,也就是类的实例对象,...

...添加背景图片最好有代码及详解,先谢谢了各位大神!!!
有两种方式,一个是用CSS层叠样式表设定,第二个就是在里面写,代码我这也有一些,我copy给你,在CSS文件中写body { background:#fff;写上要用的背景图片url,一般设一个包中,写入路径 font-size:12px;color:#000;font-family:"宋体";height:100%;} ...

请各位高手们指点迷津!!在JAVA中“int limit = (int) math.sqrt(num...
应该是Math.sqrt()吧,是Math类的sqrt方法,就是求平方根,num是double类型的数,Math.sqrt()得到的是一个double类型的数,所以用(int)来将double类型的数转换成为int类型的数,不然就不能赋值给int型是limit。

java 中的class.forName()是什么意思
第一种形式的参数 name表示的是类的全名;initialize表示是否初始化类;loader表示加载时使用的类加载器。第二种形式则相当于设置了参数 initialize的值为 true,loader的值为当前类的类加载器。如下图所示,java类型的属性名称叫name,可以通过forName的方法获取到这个类的实例,从而获取到类里面的属性。

请教关于struts中action的使用,求下边代码的详解……
1.首先从jsp页面说起 在jsp页面里有 (或者PaAction,这要根据你具体上下文环境)。有个文本框,你输出1或2或3或4或5,然后点击submit按钮。提交这个jsp。2.提交后就会到你给的这个xml文件代码里找action path="\/do\/PaAction"这句话,找到这句话之后,通过type="PaAction" 锁定PaAction这个java...

相似回答
大家正在搜