(70)泛型:好处、格式、字符串长度应用泛型后
来源:互联网 发布:西安黑马程序员 编辑:程序博客网 时间:2024/06/05 18:41
泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个安全机制
一、好处:
①将运行时期出现问题ClassCastException,转移到编译时期
方便程序员解决问题,让运行时的错误减少
②避免了强制转换的麻烦
二、格式
通过<>来定义要操作的引用数据类型
三、 在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型
<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型,作为参数传递到<>中即可
下面对有泛型的好处代码解释:
public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> al=new ArrayList<String>();//定义了一个容器,其数据类型为String al.add("abc01"); al.add("abc009"); al.add("abc014"); al.add("abc000"); /*al.add(4);等价于al.add(new Integer(4));在没有定义泛型的时候,可以存入任意对象,所以编译不会出错 * 但是,当定义了泛型之后,若存入除String类型的元素,就会出现编译失败情况,提高了安全性 */ Iterator<String> it=al.iterator();//若不加String,则数据类型是Object,在while中必须进行强制类型转换 //加了String后,已经确定元素的数据类型为String了,所以不用强转了 while(it.hasNext()) { String s=it.next(); System.out.println("s="+":"+s); }
对之前的需求:根据字符串长度来排序(若字符串长度相等,按自然顺序排序),加入泛型,使代码更简单
①Comparator接口
int compare(T o1, T o2)
要操作的对象是什么类型, 则T写什么类型,在实现的方法中也是什么类型,这个类型并不确定
类似
②ArrayList类
boolean add(E e)
要操作的元素,是什么类型,则E写什么类型,在对应的方法中也是什么类型,这个类型并不确定。
当类的元素类型确定后,就可以防止一些操作的不安全性,如add就可以在编译时,检查出是否存入的是指定的类型
import java.util.Comparator;public class StringCompare implements Comparator<String>{ public int compare(String o1,String o2) { String str1=o1; String str2=o2; int num=str1.length()-str2.length(); if(num==0) { return str1.compareTo(str2); } return num; }}public class StringDemo { public static void main(String[] args) { TreeSet ts=new TreeSet(new StringCompare()); ts.add("lisi00"); ts.add("lisi001"); ts.add("lisi02"); ts.add("lisi0"); ts.add("lisi04"); Iterator it=ts.iterator(); while(it.hasNext()) { Object obj=it.next(); String str=(String)obj; System.out.println(str); }}}
阅读全文
0 0
- (70)泛型:好处、格式、字符串长度应用泛型后
- TreeSet基本应用:按照字符串长度排序
- js计算字符串长度,其中中文是utf8格式的
- 时间格式的转换 生成指定长度的随机字符串
- lua 计算utf8格式的字符串的长度
- JavaScript获取随机数,要求是长度已知的字符串格式
- 按给定的长度格式,格式化存储给定的字符串
- String字符串的好处
- 输入默认格式,长度相同的时间字符串,返回差值,小数点长度为输入参数的长度
- zookeeper 分布式应用好处
- 字符串长度
- 字符串长度
- 字符串长度
- 字符串长度
- 字符串长度
- 字符串长度
- 字符串长度
- 字符串长度
- Android如何防止apk程序被反编译
- Class not found when unmarshalling
- BZOJ 3262 陌上花开 (CDQ分治)
- ES6新特性浅析
- 用switch-case调戏java编译器
- (70)泛型:好处、格式、字符串长度应用泛型后
- Apriori定律
- Android探秘系列——信使篇
- HTML/CSS01
- 四 iOS之 画柱状图
- SMALL-FOOTPRINT KEYWORD SPOTTING USING DEEP NEURAL NETWORKS学习摘要
- Swift 定义函数
- 配置MySQL GTID 主从复制
- A