Java连载92-Collections工具类泛型初步
Posted ruigege0000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java连载92-Collections工具类泛型初步相关的知识,希望对你有一定的参考价值。
一、关于集合工具类
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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
以上是关于Java连载92-Collections工具类泛型初步的主要内容,如果未能解决你的问题,请参考以下文章