Java连载92-Collections工具类、泛型初步
2020-03-05 16:02:00来源:博客园 阅读 ()
一、关于集合工具类
java.utils.Collections; Collections工具类可以对List集合中的元素进行排序,但是集合中的元素必须是“可以比较的”,实现Comparable接口。 package com.bjpowernode.java_learning; import java.util.Collections; import java.util.*; ? public class D92_1_CollecitonsToolsClass { public static void main(String[] args) { //使用Collections工具完成集合的排序 List l = new ArrayList(); //添加元素 l.add(10); l.add(5); l.add(9); l.add(20); l.add(30); //遍历 for(int i=0;i<l.size();i++) { System.out.println(l.get(i)); } System.out.println("============="); //或者这么写,使用迭代器 Iterator it = l.iterator(); while(it.hasNext()) { System.out.println(it.next()); } System.out.println("============="); //排序 Collections.sort(l); for(Iterator it2 = l.iterator();it2.hasNext();) { System.out.println(it2.next()); } System.out.println("============="); //给定Set集合 Set s = new HashSet(); s.add(1); s.add(10); s.add(9); s.add(8); s.add(7); //对set集合进行排序 //collections.sort(s);//这个编译时失败,不能使用这个方法 //将set集合转化为List集合 List listS = new ArrayList(s); Collections.sort(listS); for(int i=0;i<listS.size();i++) { System.out.println(listS.get(i)); } System.out.println("============="); //创建List集合,,List集合中存储Person类型,是否可以排序? List ps = new ArrayList(); ps.add(new Person92()); ps.add(new Person92()); ps.add(new Person92()); ps.add(new Person92()); Collections.sort(ps);//如果不把Person92类中的compareTo方法实现,这里就会报错,因为没有定义排序方法,就无法进行排序 //将ArrayList集合转换成线程安全的 List myList = new ArrayList(); Collections.synchronizedList(myList); } } class Person92 implements Comparable{ public int compareTo(Object o){ return 1; } } ?
二、泛型初步
1.关于JDK5.0的新特性:泛型(编译期概念)
以下程序没有使用泛型缺点是什么?
如果集合不使用泛型的话,则集合中的元素类型不统一,在遍历集合中的时候,只能拿出来Object类型,需要做大量的?强制类型转换,非常麻烦。
package com.bjpowernode.java_learning; ? import java.util.*; ? public class D92_2_GenericityInitial { public static void main(String[] args) { //创建一个集合,存储A,B,C Set s = new HashSet(); //创建对象 A92 a = new A92(); B92 b = new B92(); C92 c = new C92(); s.add(a); s.add(b); s.add(c); //需求:遍历集合,如果是A92类型调用m1方法,B92类型调用m2方法,C92类型调用m3方法 Iterator i = s.iterator(); while(i.hasNext()) { Object o = i.next(); //只能做大量的强制类型转换 if(o instanceof A92) { A92 a1 = (A92)o; a1.m1(); }else if(o instanceof B92) { B92 b1 = (B92)o; b1.m2(); }else if(o instanceof C92) { C92 c1 = (C92)o; c1.m3(); } } } ? } class A92{ public void m1() { System.out.println("A 's m1.."); } } class B92{ public void m2() { System.out.println("B 's m1.."); } } class C92{ public void m3() { System.out.println("C 's m1.."); } }
2.为什么引入泛型
(1)可以统一集合中的?数据类型;
(2)可以减少强制类型转化?。
3.?泛型的优缺点:
?优点:统一类型,减少强制类型转化?。
?缺点:只能存储?一种数据类型。
下次再讲代码实例
四、源码:
D92_1_CollecitonsToolsClass.java
D92_2_GenericityInitial.java
https://github.com/ruigege66/Java/blob/master/D92_1_CollecitonsToolsClass.java
https://github.com/ruigege66/Java/blob/master/D92_2_GenericityInitial.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
原文链接:https://www.cnblogs.com/ruigege0000/p/12417173.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Java基础语法之控制流程
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash