国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 06:21:46
字體:
來源:轉載
供稿:網友

  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");
  現在,既然你已經知道如何創建一個使用泛型的定制類,那么創建一個使用泛型的定制集合類則更為簡單些。

  二、 創建一個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(); }
}
  前面的代碼聲明了隊列類,這樣它可以接收一個泛型類型。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇平县| 八宿县| 鹤岗市| 元江| 南乐县| 临澧县| 阳新县| 浦江县| 石家庄市| 余江县| 潼关县| 东源县| 张北县| 花垣县| 神木县| 台中县| 大港区| 怀宁县| 淅川县| 微山县| 金乡县| 边坝县| 从化市| 南通市| 庆安县| 修水县| 玉屏| 安化县| 文化| 临海市| 昭平县| 黄冈市| 临湘市| 松桃| 贵港市| 弥勒县| 泸西县| 永善县| 平利县| 固阳县| 永善县|