当前位置:首页 > 数据库 > 正文

entryset(keyset和entryset区别)

entryset(keyset和entryset区别)

大家好,今天来为大家解答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区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

最新文章