快速业务通道

用J2SE 5.0创建定制的泛型集合 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

用J2SE 5.0创建定制的泛型集合

时间:2011-03-05

J2SE 5.0引入了许多新型的集合API-你需要了解它们以便能够正确地实现泛型定制的集合-它可以无缝地与多种类型和新型的"for each"结构一起工作。本文将向你展示示怎样创建与J2SE最新特征相兼容的集合。

一、创建支持泛型的类

首先,你必须学习如何创建一个允许存在"泛型类型"的类。这意味着无论何时实例化你的类,你都能够指定一个或多个Java类型与该类相关联。为了说明这个问题,请考虑列表1中的一个简单示例类。

注意,列表1中的类是如何声明的。它在尖括号之间指定三个泛型。这些泛型是真实类型的占位符。当你声明一个这种类型的类时,你可以指定一个类来代替ONE,TWO和THREE。如果你不这样做,那么该类将使用Object的默认类型。

这个类显示出怎样设计一个类来接收三个泛型类型。当你创建一个这种类型的类时你要支持准确的类型。

列表1.泛型类:

package com.heatonresearch.examples.collections; public class Example<ONE, TWO, THREE> {   private ONE one;   private TWO two;   private THREE three;   public ONE getOne() { return one; }   public void setOne(ONE one) { this.one = one; }   public THREE getThree() { return three; }   public void setThree(THREE three) { this.three = three; }   public TWO getTwo() { return two; }   public void setTwo(TWO two) { this.two = two; }   public static void main(String args[]) {    Example<Double, Integer, String> example = new    Example<Double, Integer, String>();    example.setOne(1.5);    example.setTwo(2);    example.setThree("Three");   } }

下面是如何实例化一个Example类型的类的情形:

Example example=new Example();

前面的代码将代替具体的Double,Integer和String类型-相当于在列表1中的"ONE"、"TWO"和"THREE"占位符。你可以看到这些变量都有这些类型,通过下面三行设置它们的值。

example.setOne(1.5); example.setTwo(2); example.setThree("Three");

现在,既然你已经知道如何创建一个使用泛型的定制类,那么创建一个使用泛型的定制集合类则更为简单些。

用J2SE 5.0创建定制的泛型集合(2)

时间:2011-03-05

二、创建一个Queue类

一个队列是一个很有用的数据结构。为了理解一个队列的功能,你可以想像在一个娱乐公园人们排队骑马的情形。人们从队的后面进入到队中。为此,他们等待而最后到达队伍的前端。其顺序不能改变。

这种情形可以被应用到一个队列类上去。它共有两个方法,分别是"push"和"pop"。你使用push方法来把对象放置到队列中,而使用pop方法从队列中删除一项。例如,如果你使用push方法把三个对象添加到队列上,那么连续调用pop三次将以同样顺序从队列中删除这三个元素。这正与娱乐公园的情形相一致。如果有三个人以一特定的顺序进入队中,他们将以相同的顺序得到骑马娱乐。

下列代码显示出怎么实现一个使用泛型的Java队列。

package com.heatonresearch.examples.collections; import java.util.*; public class Queue { private ArrayList list = new ArrayList(); public void push(T obj) { list.add(obj); } public T pop() throws QueueException { if (size() == 0) throw new QueueException( "Tried to pop something from the queue, " + "when it was empty"); T result = list.get(0); list.remove(0); return result; } public boolean isEmpty() { ret

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号