Java集合框架 Map和泛型
作者:网络转载 发布时间:[ 2013/12/19 11:32:05 ] 推荐标签:
泛型使用
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候使用泛型呢?
通常在集合框架中创建,只要见到<>要定义泛型。
其实<>是用来接收类型的,当使用集合时,
将集合中要存储的数据类型作为参数传递到<>中即可。
示例
|
import java.util.*;
class TreeSetTest{
public static void main(String[] args){
TreeSet<String> ts = new TreeSet<String>(new LenComparator());
ts.add("abcd");
ts.add("cc");
ts.add("cba");
ts.add("z");
ts.add("a");
ts.add("sdcvrt");
Iterator<String> it = ts.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
//自定义比较器,实现Comparator接口并使用泛型
class LenComparator implements Comparator<String> {
public int compare(String s1,String s2){
/*
//升序
int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num==0)
return s1.compareTo(s2);
return num;
*/
//降序
int num = new Integer(s2.length()).compareTo(new Integer(s1.length()));
if(num==0)
return s2.compareTo(s1);
return num;
}
}
/*
结果
sdcvrt
abcd
cba
cc
z
a
*/
|
泛型类
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来扩展。
|
class Worker{}
class Student{}
//泛型以前的做法
class Tool{
private Object obj;
public void setObject(Object obj){
this.obj = obj;
}
public Object getObject(){
return obj;
}
}
//泛型类
class Utils<QQ>{
private QQ q;
public void setObject(QQ q){
this.q = q;
}
public QQ getObject(){
return q;
}
}
class GenericDemo{
public static void main(String[] args){
Utils<Worker> u = new Utils<Worker>();
u.setObject(new Worker());
Worker w = u.getObject();
/*
Tool t = new Tool();
t.setObject(new Worker());
Worker w = (Worker)t.getObject();
*/
}
}
|
泛型方法
为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将
泛型定义在方法上。
|
class Demo{
//类型定义在方法上
public <T> void show(T t){
System.out.println("show:"+t);
}
public <Q> void print(Q q){
System.out.println("print:"+q);
}
}
class GenericDemo{
public static void main(String[] args){
Demo d = new Demo();
d.show(5);
d.show(new Integer(5));
d.show("haha");
d.print(8);
d.print(new Integer(5));
d.print("heihei");
}
}
/*
结果
show:5
show:5
show:haha
print:8
print:5
print:heihei
*/
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

sales@spasvo.com