當前位置:編程學習大全網 - 圖片素材 - java中的集合有幾種

java中的集合有幾種

集合類是放在java.util.*;這個包裏。集合類存放的都是對象的引用,而非對象本身,為了說起來方便些,我們稱集合中的對象就是指集合中對象的引用(reference)。引用的概念大家不會忘了吧,在前邊我們講數據類型時講的。

集合類型主要有3種:set(集)、list(列表)、map(映射)和Queue(隊列)。//隊列為jdk5中的加上的

(1) Set

集(set)是最簡單的壹種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裏放東西。對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。我們知道數學上的集合也是Set這個,集合裏面壹定是沒有重復的元素的。

(2)List

列表(List)的主要特征是其對象以線性方式存儲,沒有特定順序,只有壹個開頭和壹個結尾,當然,它與根本沒有順序的Set是不同的。它是鏈表嘛,壹條鏈肯定有順序這個順序就不壹定了。

(3)Map

映射(Map),這個在java裏不是地圖的意思,其實地圖也是映射哈。它裏面的東西是鍵-值對(key-value)出現的,鍵值對是什麽呢?舉個例子,比如我們查字典,用部首查字法。目錄那個字就是鍵,這個字的解釋就是值。鍵和值成對出現。這樣說可以理解吧。這也是很常用的數據結構哦。

(4)Queue

在jdk5.0以前,通常的實現方式是使用java.util.List集合來模仿Queue。Queue的概念通過把對象添加(稱為enqueuing的操作)到List的尾部(即Queue的後部)並通過從List的頭部(即Queue的前部)提取對象而從 List中移除(稱為dequeuing的操作)來模擬。妳需要執行先進先出的動作時可以直接使用Queue接口就可以了。

這4個東西,有時候功能還不太完善,需要有些子類繼承它的特性。Set的子接口有TreeSet,SortedSet,List的有ArrayList等,Map裏有HashMap,HashTable等,Queue裏面有BlockingQueue等。我們來看看例子吧:

實踐: Set舉例

import java.util.*;

public class SetExample {

public static void main(String[] args) {

Set set = new HashSet(); //HashSet是Set的子接口

set.add("one");

set.add("second");

set.add("3rd");

set.add(new Integer(4));

set.add(new Float( 5.0F ));

set.add("second");

set.add(new Integer(4));

System.out.println(set);

}}

List舉例:

import java.util.*;

public class ListExample {

public static void main(String[] args) {

List list = new ArrayList();

list.add("one");

list.add("second");

list.add("3rd");

list.add(new Integer(4));

list.add(new Float( 5.0F ));

list.add("second");

list.add(new Integer(4));

System.out.println(list);

}}

Map舉例

import java.util.Map;

import java.util.HashMap;

import java.util.Iterator;

import java.io.FileReader;

public class MapExample {

public static void main(String[] args) throws java.io.FileNotFoundException {

Map word_count_map = new HashMap();

FileReader reader = new FileReader(args[0]);

Iterator words = new WordStreamIterator(reader);

while ( words.hasNext() ) {

String word = (String) words.next();

String word_lowercase = word.toLowerCase();

Integer frequency = (Integer)word_count_map.get(word_lowercase);

if ( frequency == null ) {

frequency = new Integer(1);

} else {

int value = frequency.intValue();

frequency = new Integer(value + 1);}

word_count_map.put(word_lowercase, frequency);

}

System.out.println(word_count_map);

}}

Queue舉例:

import java.io.IOException;

import java.io.PrintStream;

import java.util.LinkedList;

import java.util.Queue;

public class QueueTester {

public Queue<String> q; //發現了壹個奇怪的語法,這個尖括號是泛型聲明

public QueueTester() {q = new LinkedList<String>();}

public void testFIFO(PrintStream out) throws IOException {

q.add("First");

q.add("Second");

q.add("Third");

Object o;

while ((o = q.poll()) != null) {

out.println(o);}}

public static void main(String[] args) {

QueueTester tester = new QueueTester();

try { tester.testFIFO(System.out);

} catch (IOException e) {

e.printStackTrace(); } }}

  • 上一篇:失寵的小沈陽:從壹炮走紅到銷聲匿跡,他做錯了什麽
  • 下一篇:這個頭像叫什麽名字?麻煩告知壹下
  • copyright 2024編程學習大全網