JAVA集合框架

上传人:仙*** 文档编号:37296572 上传时间:2021-11-02 格式:DOC 页数:19 大小:174.50KB
返回 下载 相关 举报
JAVA集合框架_第1页
第1页 / 共19页
JAVA集合框架_第2页
第2页 / 共19页
JAVA集合框架_第3页
第3页 / 共19页
点击查看更多>>
资源描述
如果您需要使用本文档,请点击下载按钮下载!集合框架 Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。它们都封装在java.util包中核心接口 Java集合框架的核心接口有两种:Collection(聚集)和Map(映射) Collection 接口是一组允许重复的对象。 Set 中的数据对象没有顺序且不可以重复。接口 List中的数据对象有顺序且可以重复。接口 Map接口是一组成对的键值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。不能有重复的键Collection 类 java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法 void sort(List l) 对List容器内的元素排序 void shuffle(List l) 对List容器内的对象进行随机排列 void reverse(List l) 对List容器内的对象进行逆续排列 void fill(List l, Object o) 用一个特定的对象重写整个List容器 void copy(List dest,List src) 将src List容器内容拷贝到dest List容器 int binarySearch(List l, Object o) 对于顺序的List容器,采用折半查找的方法查找特定对象1 / 191如果您需要使用本文档,请点击下载按钮下载!例题:List l1 = new LinkedList();List l2 = new LinkedList();for(int i=0; i=9; i+) l1.add(a+i); System.out.println(l1);Collections.shuffle(l1); /随机排列System.out.println(l1); Collections.reverse(l1); /逆续System.out.println(l1);Collections.sort(l1); /排序 System.out.println(l1);System.out.println(Collections.binarySearch(l1,“a5”); /折半查找List2 / 192如果您需要使用本文档,请点击下载按钮下载! List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复 List 容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。 List 接口中所定义的方法: Object get(int index); Object set(int index, Object element); void add(int index, Object element); Object remove(int index); int indexOf(Object o); int lastIndexOf(Object o);List接口的实体类LinkList类 第一步,确定存储方式 1、LinkedList类是List接口的一个具体实现类3 / 193如果您需要使用本文档,请点击下载按钮下载!2、LinkedList 类用于创建链表数据结构3、插入或者删除元素时,它提供更好的性能 创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add(Object obj)、以及get(),添加main方法进行验证,要求: 使用LinkedList实现堆栈 在向LinkedList中添加时,使用addLast方法 在从LinkedList中取出时,使用removeLast方法import java.util.*;public class MyStack /* * List的实现类LinkedList * LinkedList存储时按照后进先出的原则 */private LinkedList stack=new LinkedList();/* * 把对象存入LinkedList的第一个位置 */public void push(Object o)stack.addFirst(o);/* * param args * 把第一个位置的对象进行删除 */public Object pop()return stack.removeFirst();/* * 取得LinkedList的第一个元素 */public Object peek()return stack.getFirst();public static void main(String args) MyStack m=new MyStack();m.push(wangwu);m.push(zhangsan);m.push(lisi);System.out.println(现在箩筐顶部的元素是:+m.peek();m.pop();4 / 194如果您需要使用本文档,请点击下载按钮下载!System.out.println(现在箩筐顶部的元素是:+m.peek();ArrayList类 import java.util.ArrayList;public class TestArrayList /* * List接口的第二个实现类,按照先进先出 */public static void main(String args) ArrayList list=new ArrayList();list.add(a);list.add(b);list.add(c);for (int i=0;ilist.size();i+)String temp=list.get(i);System.out.println(temp);import java.util.ArrayList;class Studentpublic String name;public int num;public String address;public Student(String name,int num,String address)this.name=name;this.num=num;this.address=address;public String getName() return name;public void setName(String name) this.name = name;public int getNum() 5 / 195如果您需要使用本文档,请点击下载按钮下载!return num;public void setNum(int num) this.num = num;public String getAddress() return address;public void setAddress(String address) this.address = address;public class Arrayzuoye /* * 利用ArrayList来存储一个小学生类,学生类有学号,姓名,住址三个属相,实例化出一个学生“张三”。并且进行遍历取出 * 集合中不是真正存入某个对象, 而是保存的是对象的引用 */public static void main(String args) ArrayList list=new ArrayList();Student s=new Student(张三,1000000,中国);/把张三这个对象存入ArryList中list.add(s);/s.setName(李四);System.out.println(list.get(0).name); ArrayList类封装了一个动态再分配的Object数组。 集合框架中保存的都是对象的引用,不是对象的备份。这一点尤其重要111111111111111111111111111News类import java.util.Date;public class News private int id;private String title;private String creater;private Date date;public News(int id,String title,String creater,Date date)6 / 196如果您需要使用本文档,请点击下载按钮下载!this.id=id;this.title=title;this.creater=creater;this.date=date;public int getId() return id;public void setId(int id) this.id = id;public String getTitle() return title;public void setTitle(String title) this.title = title;public String getCreater() return creater;public void setCreater(String creater) this.creater = creater;public Date getDate() return date;public void setDate(Date date) this.date = date;22222222222222222222222222import java.util.ArrayList;import java.util.Date;public class TestNews /* * param args */public static void main(String args) News new1=new News(1,car,管理员,new Date();News new2=new News(2,newz,管理员,new Date();ArrayList list=new ArrayList(); /list.add(new1);list.add(new2);System.out.println(list.size();7 / 197如果您需要使用本文档,请点击下载按钮下载!for(int i=0;ilist.size();i+)/News n=(News)list.get(i);/System.out.println(n.getTitle();System.out.println(list.get(i).getTitle();List接口的实体类ArrayList做删除import java.util.ArrayList;public class DelteArrays /* * param args */public static void main(String args) ArrayList list=new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);String value=;System.out.println(list.size();for(int i=0;ilist.size();i+)System.out.println(list.get(i);for(int i=0;ilist.size();i+)value=list.get(i);if(3.equals(value)list.remove(i);System.out.println(list.size();for(int i=0;ilist.size();i+)System.out.println(使用传统遍历方式后+现在的值+list.get(i);Iterator接口8 / 198如果您需要使用本文档,请点击下载按钮下载! 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。 Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。 Iterator接口定义了如下方法: boolean hasNext(); /判断游标右边是否有元素 Object next(); /返回游标右边的元素并将游标移动到下一个位置 void remove(); /删除游标左面的元素,在执行完next之后该 /操作只能执行一次import java.util.ArrayList;import java.util.Iterator;public class DeleteByIterator public static void main(String args) ArrayList list=new ArrayList();list.add(3);list.add(3);list.add(3);list.add(4);String value=;Iterator it=list.iterator(); /对容器list的内容进行遍历while(it.hasNext() /游标在第一个元素的左边,判断下一个元素是否存在9 / 199如果您需要使用本文档,请点击下载按钮下载!value=it.next();if(3.equals(value)it.remove();for(int i=0;ilist.size();i+)System.out.println(现在的值+list.get(i);import java.util.HashSet;import java.util.Iterator;public class TestSet1 public static void main(String args) HashSet set=new HashSet();set.add(1);set.add(2);set.add(3);for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();Set接口Set 接口继承 Collection 接口,它不允许集合中存在重复项, 而且它不象List按照加入列表的顺序存储元素,它有自己的排列法则。 Set 接口是Collection的子接口,Set接口没有提供额外的方法,但实现 Set 接口的容器类中的元素是没有有顺序的,而且不可以重复 Set 容器可以与数学中“集合”的概念相对应10 / 1910如果您需要使用本文档,请点击下载按钮下载! J2SDK API中 所提供的 Set 容器类有 HashSet,TreeSet 等import java.util.HashSet;import java.util.Iterator;public class TestSet1 public static void main(String args) HashSet set=new HashSet();set.add(1);set.add(2);set.add(3);for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();HashSet类 用HashSet过滤自定义类。一般认为如果学号一致,就应该是同一个人。本例的过滤规则就是同学号的学生将保留一个。11 / 1911如果您需要使用本文档,请点击下载按钮下载!11111111111111111111111111111111111111Student类import java.util.HashSet;import java.util.Iterator;class Student private String num; private String name; Student(String num,String name) this.num=num;12 / 1912如果您需要使用本文档,请点击下载按钮下载! this.name=name; public String getNum() return num;public void setNum(String num) this.num = num;public String getName() return name;public void setName(String name) this.name = name;public String toString() return 学号是+num+姓名是+name;public int hashCode() return this.getNum().hashCode();public boolean equals(Object obj) Student stu=(Student) obj;if(this.getNum()=stu.getNum()return true;return false;public class TestStudent public static void main(String args) HashSet set=new HashSet();Student s1=new Student(13,李四);Student s2=new Student(12,张三);Student s3=new Student(12,w);Student s4=new Student(11,f);set.add(s1);set.add(s2);set.add(s3);set.add(s4);/问题1:如何打印出来就是姓名+学号这种形式呢?/问题2:set中存储的对象如果hashCode一致,就认为是一个对象/只要对象学号的hasCode一致,set进行自动过滤13 / 1913如果您需要使用本文档,请点击下载按钮下载!/iter.next()进行对象实例化时,会自动调用类中隐藏的方法for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();LinkedHashSet的用法LinkedHashSet是HashSet的子类,用法和HashSet一致。 import java.util.Iterator;import java.util.LinkedHashSet;public class LinkedHashSetTest /* * 存储有序对象先进先出*/public static void main(String args) LinkedHashSet set=new LinkedHashSet();set.add(1);set.add(2);set.add(3);set.add(4);for(Iterator iter=set.iterator();iter.hasNext();)System.out.println(iter.next();Map接口 Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。14 / 1914如果您需要使用本文档,请点击下载按钮下载! 实现Map接口的类用来存储键值 对。 Map 接口的实现类有HashMap(查找速度最快)和TreeMap等,HashMap通过hashcode对其内容进行快速查找,而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); 第一步,确定存储方式 1、Map接口用于维护“键-值对”的关联性,可以通过键查找值2、HashMap是Map接口的一个具体实现类 15 / 1915如果您需要使用本文档,请点击下载按钮下载!import java.util.HashMap;import java.util.Iterator;public class MapTest /* * param args */public static void main(String args) HashMap map=new HashMap();map.put(001,aaaaaaaaaa);map.put(002,bbbbbbbbbbbb);map.put(003,cccccccccccccc);System.out.println(map.get(001);/先把HashMap转换成Set接口,再通过接口的相应方法遍历for(Iterator iter=map.keySet().iterator();iter.hasNext();)String key=(String)iter.next();System.out.println(key+map.get(key);/如果说map里面包含001的键值if(map.containsKey(001)System.out.println(有此键值);elseSystem.out.println(无此键值);package i;import java.util.HashMap;import java.util.Iterator;public class Student private String name;private String className;public Student(String name,String className)this.name=name;this.className=className;16 / 1916如果您需要使用本文档,请点击下载按钮下载!public String getName() return name;public void setName(String name) this.name = name;public String getClassName() return className;public void setClassName(String className) this.className = className;public String toString() / TODO Auto-generated method stubreturn this.className;public static void main(String arge)Student s1=new Student(rose,c1);Student s2=new Student(jack,c2);HashMap hm=new HashMap();hm.put(s1, rose);hm.put(s2, jack);for(Iterator iter=hm.keySet().iterator();iter.hasNext();)Student s=(Student)iter.next();System.out.println(s+hm.get(s);package j;import i.Student;import java.util.HashMap;import java.util.Iterator;import java.util.Map;class Book 17 / 1917如果您需要使用本文档,请点击下载按钮下载!private String title;public Book(String title)this.title=title;public String getTitle() return title;public void setTitle(String title) this.title = title;public String toString() / TODO Auto-generated method stubreturn this.getTitle();public class BookTest public static void main(String argc) Book book1=new Book(呼啸山庄); Book book2=new Book(简爱); Map hs=new HashMap(); hs.put(001, book1); hs.put(002, book2); for(Iterator iter=hs.keySet().iterator();iter.hasNext();) String b=(String)iter.next(); System.out.println(b+hs.get(b); 总结: Java的集合框架分别派生自Collection和Map接口。 Collection有两个常用子接口List和Set,分别表示有序可重复,无序不可重复的集合。 18 / 1918如果您需要使用本文档,请点击下载按钮下载! (注:可编辑下载,若有不当之处,请指正,谢谢!) 19 / 1919
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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