愛悠閑 > 從頭認識java-15.7 Map(1)-使用數組來簡單模擬Map的創建

從頭認識java-15.7 Map(1)-使用數組來簡單模擬Map的創建

分類: JAVA基礎  |  標簽: java  |  作者: raylee2007 相關  |  發布日期 : 2016-01-21  |  熱度 : 462°

這一章節我們來使用數組模擬一下Map,了解一下Map的創建。

1.Map是什么?

Map,映射表,也叫關聯數組,維護“鍵-值”的關聯。


2.使用數組模擬Map

package com.ray.ch15;

import java.util.HashSet;
import java.util.Set;

public class Test<T> {
	public static void main(String[] args) {
		AssociativeArray<String, String> map = new AssociativeArray<String, String>(
				2);
		map.put("one", "1");
		map.put("two", "2");
		try {
			map.put("three", "3");
		} catch (Exception e) {
			System.out.println("too many objects");
		}
		for (String key : map.getKeySet()) {
			System.out.println(map.getByKey(key));
		}
	}
}

class AssociativeArray<K, V> {
	private Object[][] objects;

	private int index = 0;

	public AssociativeArray(int count) {
		objects = new Object[count][2];
	}

	public void put(K key, V value) {
		if (index >= objects.length) {
			throw new ArrayIndexOutOfBoundsException();
		}
		objects[index++] = new Object[] { key, value };
	}

	public Set<K> getKeySet() {
		Set<K> set = new HashSet<K>();
		for (int i = 0; i < objects.length; i++) {
			set.add((K) objects[i][0]);
		}
		return set;
	}

	@SuppressWarnings("unchecked")
	public V getByKey(K key) {
		V v = null;
		for (int i = 0; i < objects.length; i++) {
			if (objects[i][0] == key) {
				v = (V) objects[i][1];
			}
		}
		return v;
	}

}

輸出:

too many objects
2
1


上面的代碼使用數組來模擬了Map的創建。

解釋:

(1)上面使用Object數組來作為底層數據存儲結構

(2)通過數組的賦值實現get方法

(3)通過遍歷數組實現getKeyset和get方法

注意:

上面的代碼是最簡單的實現,沒有經過任何的優化,存在各種的問題,我們將在后面結束java是通過什么實現來進行優化的。


總結:我們這一章節主要介紹怎樣使用數組來簡單模擬map的創建。


這一章節就到這里,謝謝。

-----------------------------------

http://www.dgvxxj.live/article/p-2824252.html



快乐彩中奖说明