黑马程序员——Java集合基础知识之Collection
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了黑马程序员——Java集合基础知识之Collection,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10312字,纯文字阅读大概需要15分钟。
内容图文
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>集合基础知识——Collection
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Java中集合框架由常用的Collection接口和Map接口组成,而Collection接口又有两个子接口,是List接口和Set接口,常用的集合框架由这三个类组成。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘color: rgb(255, 0, 0); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>List接口的功能方法
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
List的使用最为简单,创建集合,通过add方法添加元素,get方法获取元素,通过迭代器获取元素。List接口存放的数据无序的,添加速度快,但是查询速度慢,因为查询的时候必须遍历,每次都重头开始,效率较低。常用实现类有ArrayList,LinkedList。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>List list =new ArrayList();
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>//添加元素
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.add ("李白");
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.add ("李白");
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.add ("苏轼");
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.add ("李清照");
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>System.out .println (list.size()) ;//查询元素个数。4个
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>System.out .println (list.contains( "白居易"));//查询是否含有元素“白居易”,返回false
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.remove (0) ;//删除0号元素
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.indexOf ("陆游") ;//查询元素的位置,若找不到返回-1;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>for(int i= 0; i< list. size();i++){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String str=(String )list.get( i);//必须强制类型转换
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> System .out.println( list. get(i ));
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>//用迭代去取元素
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Iterator it =list .iterator ();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>while(it .hasNext ()){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String
name =( String)it .next (); //必须强制类型转换
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> System .out.println( "诗人"+name );
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>list.clear (); //清空集合
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>System.out .println (list.size()) ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘color: rgb(255, 0, 0); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Set和存储顺序
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
存入Set的元素必须是唯一的,Set并不会保证元素不会重复,Set必须改写equals方法以确保元素的唯一性。Set需要一种方式来维护顺序,不同的Set类型会有不同的实现。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
HashSet是为了快速查找而设计的Set,存入HashSet的元素必须实现hashCode。如果我们没有实现hashCode也能通过,并且没有运行错误,但是那样的话会违背Set的原则,因为它会使用默认的hashCode方法,这是合法的,尽管他是不正确的。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
TreeSet可以实现元素的自然排序,但是前提是你会正确地实现Comparator或者对象本身具有你想要的比较方式。
<SPAN style=‘color: rgb(100, 100, 100); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
@Override
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public int hashCode () {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> final int prime = 31;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> int result = 1;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> result = prime * result + Score;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> result = prime * result + (( name == null ) ? 0 : name. hashCode ());
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return result;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> @Override
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public boolean equals (Object obj ) {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( this == obj)
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return true ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( obj == null)
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return false ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( getClass () != obj .getClass ())
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return false ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> Poet
other = ( Poet) obj;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( Score != other. Score)
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return false ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( name == null ) {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if ( other. name != null )
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return false ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> } else if (! name. equals (other .name ))
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return false ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return true ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘color: rgb(1, 1, 1); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String name;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> int Score ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public int compareTo (Object
o ) {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> // TODO Auto-generated method
stub
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if (! (o instanceof Poet)) System. out. println ("不合法输入" );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> Poet
po =( Poet )o ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> return this .Score > po. Score? 1:
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> ( this. Score== po. Score? this. name. compareTo( po. name ):- 1) ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>//往HashSet和TreeSet中添加已经实现了hashCode,equals和comparaTo的对象。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //添加相同的对象
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Set hs = new HashSet() ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Set ts = new TreeSet() ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet p1 =new Poet ("李清照" ,25 );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet p2 =new Poet ("李清照" ,25 );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet p3 =new Poet ("苏轼" ,25 );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet p4 =new Poet ("苏轼" ,24 );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet p5 =new Poet ("苏轼" ,23 );
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>//打印结果
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>/*[苏轼,
Score=25, 苏轼, Score=24, 苏轼, Score=23, 李清照, Score=25]
<SPAN style=‘color: rgb(63, 127, 95); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>[苏轼,
Score=23, 苏轼, Score=24, 李清照, Score=25, 苏轼, Score=25]*//
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> HashSet和TreeSet都剔除了相同的元素,HashSet是调用hashCode和equals方法完成的,而TreeSet是调用对象的comparaTo的方法完成的。TreeSet按照得分的大小从小到大排序,而HashSet没有这样的自然比较顺序。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Set的取出元素
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Set没有取出get();的方法,所以只能用该机for循环或者迭代器Iterato来获取元素。Iterator有三个方法,iterator()得到迭代器,hashnext()判断下一个元素是否存在,next()取出一个元素并将脚标往下移一位。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Iterator it =ts .iterator (); //获取迭代器
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>while (it .hasNext ()){ //判断下一个元素是否存在
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Poet po =( Poet )it .next (); //取出下一个元素
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> System . out. println( po );
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
内容总结
以上是互联网集市为您收集整理的黑马程序员——Java集合基础知识之Collection全部内容,希望文章能够帮你解决黑马程序员——Java集合基础知识之Collection所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】