-
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
出 处:https://www.cnblogs.com/ruigege0000/p/12417173.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置