Java集合

上传人:青*** 文档编号:252494961 上传时间:2024-11-16 格式:PPT 页数:47 大小:119.50KB
返回 下载 相关 举报
Java集合_第1页
第1页 / 共47页
Java集合_第2页
第2页 / 共47页
Java集合_第3页
第3页 / 共47页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java集合,集合概述,为了使程序便利地存储和操纵数目不固定的一组数据,JDK类库中供给了Java集合,全部Java集合类都位于java.util包中。与Java数组不同,Java集合不能存放根本数据类型,而只能存放对象。,Java集合主要包括三种类型:Set(集),List(列表),Map(映射)。,Java集合类框图,Set,Collection,List,AbstractCollection,AbstractList,AbstracSet,SortedSet,TreeSet,HashSet,AbstractSquentialList,LinkedList,接口,抽象类,具体类,继承,实现,ArrayList,Vector,Java集合类框图,Map,HashMap,SortedMap,LinkedHashMap,TreeMap,接口,抽象类,具体类,继承,实现,Collection和Iterator接口,在Collection接口中声明白适用于Java集合(只包括Set和List)的通用方法。因此Set和List对象可以调用以上方法,Map对象不行以。,Iterator接口隐蔽了底层集合的数据构造,向客户程序供给了遍历各种数据集合的统一接口。,假设集合中的元素没有排序,Iterator遍历集合中元素的挨次是任意的,并不愿定与集合中参与元素的挨次是全都的。,Set(集),Set是最简洁的集合,集合中的对象不依据特定的方式排序,并且没有重复的对象。Set接口主要有两个实现类:HashSet和TreeSet。,Set(集),1,5,7,2,8,6,4,3,Set的一般用法,Set集合中存放的是对象,并且没有重复对象。,Java中实现Set接口的类很多,至于该用哪个,我们不用区分,我们只对接口负责。,这样就创立了一个集合对象,我们把它当作抽象的集合接口对待。,使用接口的好处在于,实现类将来可以被替换,而程序不用做很多改动。,Set set=new HashSet;,Set的一般用法,Set集合依次把三个引用变量参与到集合中。,Set set=new HashSet;,String s1=new String(“Hello”);,String s2=new String(“Hello”);,String s3=new String(“World”);,set.add(s1);,set.add(s2);,set.add(s3);,System.out.println(set.size);/对象的数目为2,Set的一般用法,Set集合存放某单位员工的名单,Set集合中元素的数目是不固定的。,Set emp=new HashSet;,emp.add(“Tom“);,emp.add(“Mike“);,emp.add(“Jack“);,emp.remove(“Tom“);,emp.remove(“Jack“);,emp.add(“Linda“);,System.out.println(emp.size);/对象的数目为2,HashSet类,HashSet类依据哈希算法来存取集合中的对象,具有很好的存取和查找性能。,当向集合中参与一个对象时,HashSet会调用对象的hashCode方法来获得哈希码,然后依据哈希码进一步计算出对象在集合中的位置。,散列技术的原理,把对象的哈希码直接用一个固定的公式计算,得出存储位置的方法。,优点是:可以快速命中搜寻的目标。,最简单的哈希码公式:模 9 运算,冲突的解决方案:顺序检测,0 1 2 3 4 5 6 7 8,26,15,22,24,26,15,22,24,HashSet类,在Object类中定义hashcode和equals方法。假设object1.equals(object2)为true,那么object1和object2的哈希码也确定一样。,为保证HashSet正常工作,要求当两个对象用equals方法比较的结果为true时,它们的哈希码也相等。,HashSet类,public class Student,private String name;,private int age;,public Student(String name,int age),this.name=name;,this.age=age;,public void show,System.out.println(name+“+age);,public boolean equals(Object obj),if(obj instanceof Student),Student obj2=(Student)obj;,return name.equals(obj2.name);,else,return false;,public int hashCode,return name.hashCode;,public static void main(String args),Set s=new HashSet;,s.add(new Student(“Tom“,15);,s.add(new Student(“Mike“,25);,s.add(new Student(“Tom“,45);,Iterator it=s.iterator;,while(it.hasNext),Student stu=it.next;,stu.show;,TreeSet类,TreeSet承受树构造来存储数据,它中的每个元素成为一个节点,节点会依据其存放数据的“大小”挨次,一层一层地依次排列,对于同一层中的节点从左到右按“大小”挨次递增排列,下一层的都比上一层的小。,apple,boy,girl,zoo,Set set=new TreeSet;,set.add(“boy”);,set.add(“zoo”);,set.add(“apple”);,set.add(“girl”);,root,TreeSet类,TreeSet类实现了SortedSet接口,能够对集合中的对象进展排序。,Set set=new TreeSet;,set.add(new Integer(8);,set.add(new Integer(6);,set.add(new Integer(7);,Iterator it=set.iterator;,while(it.hasNext),System.out.println(it.next+“);,输出结果为:6 7 8,TreeSet类,当向集合中参与一个对象时,会把它插入到有序的对象集合中。,TreeSet支持来两种排序方式:自然排序和客户化排序。默认状况下承受自然排序。,自然排序,在JDK类库中,有一局部类实现Comparable接口,如Integer、Double和String等,Comparable接口有一个compareTo(Object o)方法,它返回整数类型。,对于表达式x pareTo(y),假设返回值为0,则表示x和y相等,假设返回值大于0,则表示x大于y,假设返回值小于0,则表示x小于y。,自然排序,TreeSet调用对象的compareTo方法比较集合中对象的大小,然后进展升序排列,这种方式称为自然排序。,JDK类库中实现了Comparable接口的一些类的排序方式。,类,排序,Byte、Double、Float、Integer、Long、Short,按数字大小排序,Character,按字符Unicode值的大小排序,String,按字符串中字符的Unicode值的大小排序,自然排序,使用自然排序时,只能向TreeSet集合中参与同一类型的对象,并且这些对象必需实现Comparable接口。,自然排序,public class Point implements Comparable,private int x;,private int y;,public Point(int x,int y),this.x=x;,this.y=y;,public String toString,return“;,public int compareTo(Object obj),if(obj instanceof Point),Point p=(Point)obj;,return(x*1000+y)-(p.x*1000+p.y);,else,return-1;,public static void main(String args),Set s=new TreeSet;,s.add(new Point(2,1);,s.add(new Point(1,1);,s.add(new Point(2,2);,s.add(new Point(1,2);,Iterator it=s.iterator;,while(it.hasNext),Point p=it.next;,System.out.println(p.toString);,客户化排序,接口供给具体的排序方式,指定被比较的对象的类型,Comparator有个compare(Type x,Type y)方法,用于比较两个对象的大小。,compare(x,y)的返回值为0,则表示x和y相等,假设返回值大于0,则表示x大于y,假设返回值小于0,则表示x小于y。,客户化排序,假设希望TreeSet依据Student对象的name属性进展降序排列,可以先创立一个实现Comparator接口的类StudentComparator。,StudentComparator类就是一个自定义的比较器。,List(列表),List的主要特征是依据元素以线性方式存储,允许集合中存放重复对象。List接口的主要实现类包括:ArrayList和LinkedList。,ArrayList:代表长度可以变化的数组。允许对元素进展快速的随机访问,但是向ArrayList中插入与删除元素速度较慢。,10,65,21,15,head,List(列表),LinkedList:双向链表。向LinkedList中插入和删除元素的速度较快,随机访问的速度较慢。它单独具有addFirst、addLast、getFirst、getLast、removeFirst、removeLast方法。,10,15,21,56,head,访问List中的元素,List中的对象依据索引位置排序,程序可以依据对象在集合中的索引位置来检索对象。,List list=new ArrayList;,list.add(new Integer(3);,list.add(new Integer(4);,list.add(new Integer(3);,list.add(new Integer(2);,for(int i=0;ilist.size;i+),System.out.print(list.get(i)+”);,Iterator it=list.iterator;,while(it.hasNext),System.out.print(it.next+”);,为List排序,List只能对集合中的对象按索引挨次排序,假设希望对List中的对象依据其他特定的方式排序,可以借助Comparator接口和Collections类。,Collections类是对Java集合类库中的帮助类,它供给操纵集合的各种静态方法。,sort(List list):对List中的对象进展自然排序。,sort(List list,Comparator comparator):对List中的对象进展客户化排序,comparator参数指定排序方式。,为List排序,List list=new ArrayList;,list.add(new Integer(3);,list.add(new Integer(4);,list.add(new Integer(3);,list.add(new Intege
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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