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

2016-02-19 13:42 0 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的用J2SE 5.0创建定制的泛型集合,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

J2SE 5.0引入了许多新型的集合API-你需要了解它们以便能够正确地实现泛型定制的集合-它可以无缝地与多种类型和新型的"for each"结构一起工作。本文将向你展示示怎样创建与J2SE最新特征相兼容的集合。
  
  一、 创建支持泛型的类
  
   !-- frame contents -- !-- /frame contents --   首先,你必须学习如何创建一个答应存在"泛型类型"的类。这意味着无论何时实例化你的类,你都能够指定一个或多个Java类型与该类相关联。为了说明这个问题,请考虑列表1中的一个简单示例类。
  
  注重,列表1中的类是如何声明的。它在尖括号之间指定三个泛型。这些泛型是真实类型的占位符。当你声明一个这种类型的类时,你可以指定一个类来代替ONE,TWO和THREE。假如你不这样做,那么该类将使用Object的默认类型。
  
  这个类显示出怎样设计一个类来接收三个泛型类型。当你创建一个这种类型的类时你要支持准确的类型。
  
  列表1.泛型类:
  
  package com.heatonresearch.examples.collections;
  public class ExampleONE, 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[]) {
  ExampleDouble, Integer, String example = new
  ExampleDouble, 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");
  现在,既然你已经知道如何创建一个使用泛型的定制类,那么创建一个使用泛型的定制集合类则更为简单些。
  
  二、 创建一个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() { return list.isEmpty(); }
  public int size() { return list.size(); }
  public void clear() { list.clear(); }
  }
  前面的代码声明了队列类,这样它可以接收一个泛型类型。
  
  

来源:https://www.tulaoshi.com/n/20160219/1605027.html

延伸阅读
最近在开发的过程中用到了字符串的替换,本来觉得挺简单的问题,却总也解决不了。字符串明明是替换了,却总也输出不了正确结果,很是郁闷,到底是为什么呢? 先来看我的代码: Newsdetialsnt=(Newsdetials)ntIter.next(); System.out.println("新闻明细记录"+nt); Stringcontent=nt.getContent(); System.out.println("新闻的内容是:"+con...
一、内层方法抛出异常,外层方法捕捉并处理异常: public void methodA (){    try{        // 调用methodB        methodB();    }    catch(ExceptionType et){...
首先要了解Java默认的序列化行为,java将一切关于对象的信息都保存了下了,也就是说,有些时候那些不需要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑数据就可以了。不需要保存的数据我们可以用要害字transient标出。 以下是一个例子: import java.io.*; public class Serial implements Seria...
首先要了解java默认的序列化行为,java将一切关于对象的信息都保存了下了,也就是说,有些时候那些不需要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑数据就可以了。不需要保存的数据我们可以用关键字transient标出。 以下是一个例子: import java.io.*; public class Serial implements Serializable { int com...
这是本人与同事在工作中对字符串处理的总结,发表出来,希望对大家有些帮助,也希望大家给予指正,谢谢!~ import java.util.*; /** * 文件标题: * * 关于字符串的一些处理方法:   * @版本 1.0 */ public class StringUtil { public StringUtil() { } /** * @descri...

经验教程

759

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部