欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java容器类学习教程.pptx

    • 资源ID:77381993       资源大小:161.64KB        全文页数:35页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java容器类学习教程.pptx

    容器的概念容器 APICollection 接口Iterator 接口Set 接口List 接口 和 Comparable 接口Map 接口本章内容第1页/共35页Collection 表示一组对象,它是集中,收集的意思,就是把一些数据收集起来。Collection函数库是在java.util 包下的一些接口和类,类是用来产生对象存放数据用的,而接口是访问数据的方式。Collection函数库与数组的两点不同:数组的容量是有限制的,而Collection库没有这样的限制,它容量可以自动的调节。Collection函数库只能用来存放对象,而数组没有这样的限制。Collection接口是Collection层次结构 中的根接口,它定义了一些最基本的访问方法,让我们能用统一的方式通过它或它的子接口来访问数据。区别:Collection代表一组对象,Collection函数库就是java中的集合框架,Collection接口,是这个集合框架中的根接口。1.存放在Collection 库中的数据,被称为元素(element)。Collection的概念第2页/共35页Collections Framework Hierarchy Including ClassesCollectionHashSet(Set)LinkedListVector,ArrayList(List)HashtableHashmap(Map)TreeSet(SortedSet)TreeMap(SortedMap)第3页/共35页Collection 接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。Set 中的数据对象没有顺序且不可以重复。List 中的数据对象有顺序且可以重复。Map 接口定义了存储“键(key)值(value)映射对”的方法。Collections Framework API第4页/共35页Collection 接口Collection 接口中所定义的方法:boolean add(Object element);boolean remove(Object element);boolean contains(Object element);int size();boolean isEmpty();void clear();Iterator iterator();boolean containsAll(Collection c);boolean addAll(Collection c);boolean removeAll(Collection c);boolean retainAll(Collection c);Object toArray();第5页/共35页Collection 方法举例import java.util.*;public class CollectionTest public static void main(String args)Collection c=new ArrayList();/可以放入不同类型的对象c.add(hello);c.add(new Boolean(true);c.add(new Integer(100);System.out.println(size+c.size()+:+c);System.out.println(contains:+c.contains(new Integer(100);System.out.println(c.remove(new Boolean(true);System.out.println(isEmpty:+c.isEmpty();System.out.println(size+c.size()+:+c);输出结果:size3:hello,true,100contains:truetrueisEmpty:falsesize2:hello,100第6页/共35页Collection 方法举例public class Person private int id;private String name;public Person(int id,String name)this.id=id;this.name=name;public int getId()return id;public String getName()return name;public void setId(int id)this.id=id;public void setName(String name)this.name=name;public String toString()return id:+id+|name:+name;第7页/共35页Collection 方法举例import java.util.*;public class CollectionTest1 public static void main(String args)Collection c=new HashSet();c.add(new Person(1,“c+);c.add(new Person(2,“java);System.out.println(c.size()+:+c);System.out.println(contains:+c.contains(new Person(2,java);System.out.println(c.remove(new Person(2,java);System.out.println(c.size()+:+c);输出结果:2:id:2|name:java,id:1|name:c+contains:falsefalse2:id:2|name:java,id:1|name:c+第8页/共35页Collection 方法举例public int hashCode()final int PRIME=31;int result=1;result=PRIME*result+id;result=PRIME*result+(name=null)?0:name.hashCode();return result;public boolean equals(Object obj)if(this=obj)return true;if(obj=null)return false;if(getClass()!=obj.getClass()return false;final Person other=(Person)obj;if(id!=other.id)return false;if(name=null)if(other.name!=null)return false;else if(!name.equals(other.name)return false;return true;lCollection类对象在调用remove、contains 等方法时需要比较对象是否相等,这会涉及到对象类型的 equals 方法和hashCode方法;对于自定义的类型,需要重写equals 和 hashCode 方法以实现自定义的对象相等规则。l注意:Java中规定,两个内容相同的对象应该具有相等的 hash codes。l 增加Person类的equals和hashCode方法如下:第9页/共35页课堂练习(10分钟)熟悉Collection用法!第10页/共35页Iterator 接口所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。Iterator接口定义了如下方法:boolean hasNext();/判断是否有元素没有被遍历Object next();/返回游标当前位置的元素并将游标移动到下一个位置void remove();/删除游标左面的元素,在执行完next之后该 /操作只能执行一次游标Next()元素第11页/共35页Iterator 方法举例import java.util.*;public class IteratorTest public static void main(String args)Collection c=new ArrayList();c.add(new Integer(1);c.add(new Integer(2);c.add(new Integer(3);c.add(new Integer(4);Iterator it=c.iterator();while(it.hasNext()/next()的返回值为Object类型,需要转换为相应类型Object tem=it.next();System.out.println(tem.intValue()+);输出结果:1 2 3 4 第12页/共35页Iterator 方法举例import java.util.*;public class IteratorTest1 public static void main(String args)Collection c=new ArrayList();c.add(good);c.add(morning);c.add(key);c.add(happy);for(Iterator it=c.iterator();it.hasNext();)String tem=(String)it.next();if(tem.trim().length()=3)it.remove();System.out.println(c);输出结果:good,morning,happy第13页/共35页Set 接口是Collection接口的子接口,Set接口没有提供额外的方法,Set接口的特性是容器类中的元素是没有顺序的,而且不可以重复。Set 容器可以与数学中“集合”的概念相对应。J2SDK API中 所提供的 Set 容器类有 HashSet,TreeSet 等。Set 接口第14页/共35页Set 方法举例import java.util.*;public class SetTest public static void main(String args)Set s=new HashSet();s.add(hello);s.add(world);s.add(new Integer(4);s.add(new Double(1.2);s.add(hello);/相同的元素不会被加入System.out.println(s);输出结果:4,hello,1.2,world第15页/共35页Set 方法举例import java.util.*;public class TreeSetTest public static void main(String args)Set s=new TreeSet();s.add(new Integer(5);s.add(new Integer(1);s.add(new Integer(4);s.add(new Integer(2);s.add(new Integer(3);s.add(new Integer(4);Iterator it=s.iterator();while(it.hasNext()Integer tem=(Integer)it.next();System.out.println(tem.intValue();输出结果:1,2,3,4,5第16页/共35页课堂练习(15分钟)熟悉Iterator迭代器用法熟悉Set用法第17页/共35页List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复。List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。J2SDK 所提供的 List 容器类有 ArrayList,LinkedList 等。多了一些跟顺序有关的方法:List 接口void add(Object element);void add(int index,Object element);Object get(int index);Object set(int index,Object element);/修改某一位置的元素 Object remove(int index);int indexOf(Object o);/如果没有该数据,返回-1第18页/共35页List 方法举例import java.util.*;public class ListTest public static void main(String argc)List l1=new ArrayList();for(int i=0;i=5;i+)l1.add(a+i);System.out.println(l1);list.add(3,a100);System.out.println(l1);list.set(6,a200);System.out.println(list);System.out.print(String)list.get(2)+);System.out.println(list.indexOf(a3);list.remove(1);System.out.println(list);输出结果:a0,a1,a2,a3,a4,a5a0,a1,a2,a3,a4,a5a0,a1,a2,a100,a3,a4,a5a0,a1,a2,a100,a3,a4,a5a0,a1,a2,a100,a3,a4,a200a0,a1,a2,a100,a3,a4,a200a2 4a2 4a0,a2,a100,a3,a4,a200a0,a2,a100,a3,a4,a200第19页/共35页类 java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法。List 常用算法void sort(List)/对List容器内的元素排序,/排序的规则是按照升序进行排序。void shuffle(List)/对List容器内的元素进行随机排列void reverse(List)/对List容器内的元素进行逆续排列 void fill(List,Object)/用一个特定的对象重写整个List容器int binarySearch(List,Object)/对于顺序的List容器,采用折半查找的 /方法查找特定对象第20页/共35页输出结果:a0,a1,a2,a3,a4a1,a4,a2,a3,a0a0,a3,a2,a4,a1a0,a1,a2,a3,a42hello,hello,hello,hello,helloimport java.util.*;public class CollectionsTest public static void main(String argc)List aList=new ArrayList();for(int i=0;i obj 返回负数表示 this obj实现了Comparable 接口的类通过实现 comparaTo 方法从而确定该类对象的排序方式。第23页/共35页Comparable 接口public class Student implements Comparable private String name;private Integer score;public Student(String name,int score)this.name=name;this.score=new Integer(score);public int compareTo(Object o)Student n=(Student)o;int a=pareTo(n.score);return(a!=0?a:pareTo(n.name);public String toString()return name:+name+score:+score.toString();第24页/共35页Comparable 接口import java.util.*;public class StudentTest public static void main(String args)List l1=new LinkedList();l1.add(new Student(“ttt,66);l1.add(new Student(“bbb,77);l1.add(new Student(“ccc,99);l1.add(new Student(“fff,88);l1.add(new Student(“aaa,66);System.out.println(l1);Collections.sort(l1);System.out.println(l1);name:ttt score:66,name:bbb score:77,name:ccc score:99,name:fff score:88,name:aaa score:66name:aaa score:66,name:ttt score:66,name:bbb score:77,name:fff score:88,name:ccc score:99第25页/共35页课堂练习(15分钟)熟悉Comparable用法第26页/共35页实现Map接口的类用来存储键(key)值(value)对。Map 接口的实现类有HashMap和TreeMap等。Map类中存储的键值对通过键来标识,所以键值不能重复。Map 接口Object put(Object key,Object value);Object get(Object key);Object remove(Object key);boolean containsKey(Object key);boolean containsValue(Object value);int size();boolean isEmpty();void putAll(Map t);void clear();第27页/共35页Map 方法举例import java.util.*;public class MapTest public static void main(String args)Map m1=new HashMap();Map m2=new TreeMap();m1.put(one,new Integer(1);m1.put(two,new Integer(2);m1.put(three,new Integer(3);m2.put(A,new Integer(1);m2.put(B,new Integer(2);System.out.println(m1.size();System.out.println(m1.containsKey(one);System.out.println(m2.containsValue(new Integer(1);if(m1.containsKey(two)int i=(Integer)m1.get(two).intValue();System.out.println(i);Map m3=new HashMap(m1);m3.putAll(m2);System.out.println(m3.size();第28页/共35页起因:以前类型不明确:装入集合的类型都被当作Object对待,从而失去自己的实际类型。从集合中取出时往往需要转型,效率低,容易产生错误。解决办法:在定义集合的时候同时定义集合中对象的类型可以在定义Collection的时候指定也可以在循环时用Iterator指定好处:增强程序的可读性和稳定性泛型第29页/共35页import java.util.*;public class BasicGeneric public static void main(String args)List list=new ArrayList();list.add(aaa);list.add(bbb);list.add(ccc);ListIterator lit=list.listIterator();while(lit.hasNext()String tem=lit.next();System.out.println(tem);泛型第30页/共35页import java.util.*;public class MapTest1 public static void main(String args)Map m=new HashMap();for(int i=0;i 5;i+)m.put(String.valueOf(i),1);for(int i=0;i 5;i+)m.put(String.valueOf(i),1);System.out.println(m.size()+distinct words detected:);System.out.println(m);Set set=m.keySet();Iterator it=set.iterator();while(it.hasNext()System.out.println(m.get(it.next();泛型第31页/共35页增强的for循环对于遍历array 或 Collection的时候相当简便缺陷:数组:不能方便的访问下标值集合:与使用Iterator相比,不能方便的删除集合中的内容总结:除了简单遍历并读出其中的内容外,不建议使用增强for补充:增强的for循环第32页/共35页熟悉map使用方式熟悉泛型的使用!课堂练习(20分钟)第33页/共35页作业第34页/共35页感谢您的观看!第35页/共35页

    注意事项

    本文(Java容器类学习教程.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开