entryset(keyset和entryset区别)
- 数据库
- 2023-08-30
- 89
大家好,今天来为大家解答entryset这个问题的一些问题点,包括keyset和entryset区别也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起...
大家好,今天来为大家解答entryset这个问题的一些问题点,包括keyset和entryset区别也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
如何迭代hashmap
importjava.util.Collection;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Set;/**
*
*@authorAdministrator
*/
publicclassStuMapTest{publicstaticvoidmain(String[]args){
Map<String,Student>map=newHashMap<String,Student>();
Students1=newStudent("001","吕布",30);
Students2=newStudent("002","赵云",25);
Students3=newStudent("003","典韦",33);
map.put("1",s1);
map.put("2",s2);
map.put("3",s3);
byValues(map);
keySet(map);
entrySet(map);
}
//entrySet方法遍历
privatestaticvoidentrySet(Map<String,Student>map){
Set<Map.Entry<String,Student>>set=map.entrySet();
for(Iterator<Map.Entry<String,Student>>i=set.iterator();i.hasNext();){
System.out.println(i.next().getValue());}
}
//keySet方法遍历
privatestaticvoidkeySet(Map<String,Student>map){
Set<String>set=map.keySet();
for(Iterator<String>i=set.iterator();i.hasNext();){
System.out.println(map.get(i.next()));
}
}//values方法遍历
privatestaticvoidbyValues(Map<String,Student>map){
Collectionc=map.values();
for(Iterator<Student>i=c.iterator();i.hasNext();){
System.out.println(i.next());}
}
}//定义一个student类
classStudent{
privateStringid;
privateStringname;
privateintage;publicStudent(Stringid,Stringname,intage){
this.id=id;
this.name=name;
this.age=age;
}@Override
publicStringtoString(){
returnnewStringBuilder().append(id).append("").append(name).append("").append(age).toString();
}
}
Lock和synchronized该如何选择
?ReentrantLock和SynchronizedReentrantLock拥有Synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断锁等候线程A和B都要获取对象0的锁定,假设A获取了对象0锁,B将等待A释放对0的锁定,如果使用synchronized,如果A不释放,B将一直等下去,不能被中断如果使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情?ReentrantLockReentrantLock获取锁定与三种方式:a)lock(),如果获取了锁立即返回,如果别的线程持有锁,当前线程则一直处于休眠状态,直到获取锁b)tryLock(),如果获取了锁立即返回true,如果别的线程正持有锁,立即返回false;c)tryLock(longtimeout,TimeUnitunit),如果获取了锁定立即返回true,如果别的线程正持有锁,会等待参数给定的时间,在等待的过程中,如果获取了锁定,就返回true,如果等待超时,返回false;d)locklnterruptibly:如果获取了锁定立即返回,如果没有获取锁定,当前线程处于休眠状态,直到或者锁定,或者当前线程被别的线程中断?区别。synchronized:在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化synchronized,另外可读性非常好,不管用没用过5.0多线程包的程序员都能理解。oReentrantLock:ReentrantLock提供了多样化的同步,比如有时间限制的同步,可以被Interrupt的同步(synchronized的同步是不能Interrupt的)等。在资源竞争不激烈的情形下,性能稍微比synchronized差点点。但是当同步非常激烈的时候,synchronized的性能一下子能下降好几十倍。而ReentrantLock确还能维持常态。
关于entryset和keyset和entryset区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
本文链接:http://xinin56.com/su/12331.html