




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java集合类实例解析我们看一个简单的例子,来了解一下集合类的基本方法的使用:import java.util.*; public class CollectionToArray public static void main(String args) Collection collection1=new ArrayList();/创建一个集合对象 collection1.add("000");/添加对象到Collection集合中 collection1.add("111"); collection1.add("222"); Sys
2、tem.out.println("集合collection1的大小:"+collection1.size(); System.out.println("集合collection1的内容:"+collection1); collection1.remove("000");/从集合collection1中移除掉 "000" 这个对象 System.out.println("集合collection1移除 000 后的内容:"+collection1); System.out.println(&quo
3、t;集合collection1中是否包含000 :"+collection1.contains("000"); System.out.println("集合collection1中是否包含111 :"+collection1.contains("111"); Collection collection2=new ArrayList(); collection2.addAll(collection1);/将collection1 集合中的元素全部都加到collection2中 System.out.println("
4、集合collection2的内容:"+collection2); collection2.clear();/清空集合 collection1 中的元素 System.out.println("集合collection2是否为空 :"+collection2.isEmpty(); /将集合collection1转化为数组 Object s= collection1.toArray(); for(int i=0;i<s.length;i+) System.out.println(si); 运行结果为:集合collection1的大小:3 集合coll
5、ection1的内容:000, 111, 222 集合collection1移除 000 后的内容:111, 222 集合collection1中是否包含000 :false 集合collection1中是否包含111 :true 集合collection2的内容:111, 222 集合collection2是否为空 :true 111 222 这里需要注意的是,Collection 它仅仅只是一个接口,而我们真正使用的时候,确是创建该接口的一个实现类。做为集合的接口,它定义了所有属于集合的类所都应该具有的一些方法。如ArrayList (列表)类是集合类的
6、一种实现方式。 1 / 11下面,我们看一个对于迭代器的简单使用:import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo public static void main(String args) Collection collection = new ArrayList(); collection.add("s1"); collection.add("s2"
7、); collection.add("s3"); Iterator iterator = collection.iterator();/得到一个迭代器 while (iterator.hasNext() /遍历 Object element = iterator.next(); System.out.println("iterator = " + element); if(collection.isEmpty() System.out.println("collection is Empty!"); else System.out.p
8、rintln("collection is not Empty! size="+collection.size(); Iterator iterator2 = collection.iterator(); while (iterator2.hasNext() /移除元素 Object element = iterator2.next(); System.out.println("remove: "+element); iterator2.remove(); Iterator iterator3 = collection.iterator(); if (!
9、iterator3.hasNext() /察看是否还有元素 System.out.println("还有元素"); if(collection.isEmpty() System.out.println("collection is Empty!"); /使用collection.isEmpty()方法来判断 程序的运行结果为:iterator = s1 iterator = s2 iterator = s3 collection is not Empty! size=3 remove: s1 remove: s2 r
10、emove: s3 还有元素 collection is Empty! 可以看到,Java的Collection的Iterator 能够用来,: 1) 使用方法iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。 2) 使用next() 获得集合序列的中的下一个元素。 3) 使用hasNext()
11、检查序列中是否元素。 4) 使用remove()将迭代器新返回的元素删除。 需要注意的是:方法删除由next方法返回的最后一个元素,在每次调用next时,remove方法只能被调用一次 . 大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator.您可以在下面的List讲解中得到进一步的介绍。 我们看一个List的例子
12、:import java.util.*; public class ListIteratorTest public static void main(String args) List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); System.out.println("下标0开始:"+list.listIterator(0).next();/next() S
13、ystem.out.println("下标1开始:"+list.listIterator(1).next(); System.out.println("子List 1-3:"+list.subList(1,3);/子列表 ListIterator it = list.listIterator();/默认从下标0开始 /隐式光标属性add操作 ,插入到当前的下标的前面 it.add("sss"); while(it.hasNext() System.out.println("next Index="+it.nextI
14、ndex()+",Object="+it.next(); /set属性 ListIterator it1 = list.listIterator(); it1.next(); it1.set("ooo"); ListIterator it2 = list.listIterator(list.size();/下标 while(it2.hasPrevious() System.out.println("previous Index="+it2.previousIndex()+",Object="+it2.previou
15、s(); 程序的执行结果为:下标0开始:aaa 下标1开始:bbb 子List 1-3:bbb, ccc next Index=1,Object=aaa next Index=2,Object=bbb next Index=3,Object=ccc next Index=4,Object=ddd previous Index=4,Object=ddd previous Index=3,Object=ccc previous Index=2,Object=bbb previous Index=1,Object=a用得最多的主要有Set,List,Map,It
16、erator这几个接口, Set和List接口都是Collection接口的子接口,有很多相同的地方,我们只是撑握了Collection接口的方法,Set和List的用法也就差不多了. Set和List 的区别: 1、Set是没有顺序的,不能放重复的数据(相同的数据) 2、List是有顺序的,可以存放重复的数据(相同的数据)Set的实现类常用的主要有两个:HashSet、TreeSet
17、 我们可以把一类对象添加到集合中,并且按对象的某一个属性进行排序(客户化排序和自然排序) 1、对TreeSet集进行客户化排序要求写一个类实现Comparator接口,并且重写其中的Compare方法 例: 客户化排序容易扩展,如果要按其它的属性排序,只需要重新写一个类实现Comparator接口就可以了, 不需要修改原来的代码。
18、 class Users private String name; private int id; publ
19、ic Users(String name,int id) =name; this
20、.id=id; public void setName(String name)
21、 =name; public String getName()
22、 return name; public void setId(int id) &
23、#160; this.id=id; public int getId()
24、; return id; /这里重写了父类的toString方法 p
25、ublic String toString() return + "t" + this.id + "t"
26、160; /这个类实现Comparator接口,并且重写了其中的compare方法 public class MyComparator implements Comparator p
27、ublic int compare(Object o1,Object o2) Users user1=(Users)o1;
28、 Users user2=(Users)o2; if(user1.getId>user2.getId) return 1; else if(user1.getId=us
29、er2.getId) return 0; return -1; class TestComparator &
30、#160; public static void main(String args) TestComparator.test();
31、160; public static void test() Set set=new TreeSet
32、(new MyComparator(); Users user1=new Users("张三",17); Users user2=
33、new Users("李四",13); Users user3=new Users("王五",19);
34、0; Users user5=new Users("王五",19); set.add(user1); set.add(user2);
35、; set.add(user3); set.add(user5);
36、; for(Object obj :set)
37、60; System.out.println(obj);
38、60; 2、自然排序,将需要排序的那个类实现Comparable接口并且重写其中的compareTo方法 例如下: class Users implements Comparable &
39、#160; private String name; private int id; public Users(String name,int id)
40、60; =name; this.id=id;
41、; public void setName(String name) =name;
42、60; public String getName() return name;
43、 public void setId(int id) th
44、is.id=id; public int getId()
45、 return id; /这里重写了父类的toString方法 public String toString()
46、160; return + "t" + this.id + "t"
47、60; /重写compareTo方法 public int compareTo(Object o)
48、60; UserBean user = (UserBean) o; if (this.id > user.id) return 1;
49、60; else if (this.id = user.id) return 0; return -1;
50、160; 3.如果是HashSet自然排序,则要求排序的类重写hashCode方法和equals方法 二、对List和Set集进行遍历: List集有三种方法进行遍历: 1、通过下标遍历,2使用迭代器进行遍历,3、增强循环进行遍历 &
51、#160; List list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); for(int i=0;i<list.size(
52、);i+) System.out.println(list.get(i); Iterator it=list.iterator(); while(it.hasNext()
53、 System.out.println(it.next(); for(Object obj :list) System.out.println(o
54、bj); 三、Vector和ArrayList的区别: 1、Vector 和ArrayList都实现了List接口,Vector是线程安全的,可以多个线程同时访问,但性能比较差。 2、ArrayList线程不安全,不支持多个线程同时访问,但性能比较好,访问的速度快。 四、Map集是以键值对的形式存放的,键不可以重复,值
55、可以重复,如果键重复,会将原来的值覆盖, Map集的实现类主要有三个:HashMap,TreeMap,HashTable HashMap与HashTable 的区别: 1、HashTable是线程安全的,支持同步。2、HashMap线程不安全,不支持 同步,但性能比HashTable好 Map集的遍历: 1、 Map map=new HashMap() map.put("1","张飞");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全员安全生产操作题库及模拟题
- 2025年英语教师职业等级认证初级考试模拟题与答案详解
- 校园消防安全专题片(3篇)
- 2025年网络安全工程师面试模拟题及面试技巧
- 2025年小学教师安全知识测试题含考核答案
- 2025年安全生产安全管理知识安全趋势题及答案
- 2025届东营市利津县中考冲刺卷数学试题含解析
- 2025年后期制作岗位面试常见问题及答案
- 2025年安全管理竞聘面试常见问题答案
- 2025年市场营销经理岗位招聘考试专业知识模拟题及解析
- 危险废物处置服务协议
- 《观光农业概论》课件
- 派出所签订治安调解协议书范文
- 情境领导力培训课件
- DBJ41T 277-2023 装配式钢结构集成楼盖应用技术规程 河南省工程建设标准(住建厅版)
- 飞灰螯合物运输服务方案
- 中建三局社招在线测评题
- 研究生学术表达能力培养智慧树知到答案2024年西安建筑科技大学、清华大学、同济大学、山东大学、河北工程大学、《环境工程》英文版和《环境工程》编辑部
- 玉米种植风险评估与管理
- 2024-2030年中国自动涂胶机行业市场发展趋势与前景展望战略分析报告
- DL∕T 2582.1-2022 水电站公用辅助设备运行规程 第1部分:油系统
评论
0/150
提交评论