2019-10-26 21:15:32
浏览数 (1)
代码示例
代码语言:javascript
复制package *;
/**
* @program: data-structure
* @description:
* @author: ChenWenLong
* @create: 2019-09-10 11:13
**/
public class MyMap<T,K> {
//键值对数组
Entry[] array;
int size;
//内部键值对
private class Entry<T,K>{
T key;
K value;
public Entry(T key,K value){
this.key = key;
this.value = value;
}
}
/**
* 功能描述:
* 〈创建默认大小的Map〉
*
* @params : []
* @return :
* @author : cwl
* @date : 2019/9/10 11:14
*/
public MyMap(){
this(10);
}
/**
* 功能描述:
* 〈创建指定大小的Map〉
*
* @params : [size]
* @return :
* @author : cwl
* @date : 2019/9/10 11:15
*/
public MyMap(int size){
this.size = size;
}
/**
* 功能描述:
* 〈判断Map是否为空〉
*
* @params : []
* @return : boolean
* @author : cwl
* @date : 2019/9/10 11:16
*/
public boolean isEmpty(){
return size == 0;
}
/**
* 功能描述:
* 〈拓展键值对长度〉
*
* @params : [array]
* @return : com.cwl.data.map.Entry[]
* @author : cwl
* @date : 2019/9/10 11:17
*/
public Entry[] expandLength(Entry[] array){
//按照1.5倍进行拓展
Entry[] newArray = new Entry[array.length * 2 1];
for (int i=0;i<array.length;i ) {
newArray[i] = array[i];
}
return newArray;
}
/**
* 功能描述:
* 〈添加一个键值对〉
*
* @params : [key, value]
* @return : boolean
* @author : cwl
* @date : 2019/9/10 11:25
*/
public boolean put(T key,K value){
//如果长度已经满了,则对数组进行拓容
if(size == array.length){
array = expandLength(array);
}
for(int i=0;i<array.length;i ){
//如果Key相等则,value值进行覆盖
if(array[i].key.equals(key)){
array[i].value = value;
return true;
}
}
//如果原本的Map集合为空,则新创建一个集合
array[size] = new Entry(key, value);
size ;
return true;
}
/**
* 功能描述:
* 〈根据Key值获得value〉
*
* @params : [key]
* @return : java.lang.Object
* @author : cwl
* @date : 2019/9/10 11:27
*/
public Object get(T key){
if(size != 0){
for(int i=0;i<size;i ){
if(array[i].key.equals(key)){
return array[i].value;
}
}
}
return null;
}
/**
* 功能描述:
* 〈是否包含某个Key值〉
*
* @params : [key]
* @return : boolean
* @author : cwl
* @date : 2019/9/10 11:30
*/
public boolean containsKey(T key){
for(int i=0;i<size;i ){
if(array[i].key.equals(key)){
return true;
}
}
return false;
}
/**
* 功能描述:
* 〈判断是否包含某个Value值〉
*
* @params : [value]
* @return : boolean
* @author : cwl
* @date : 2019/9/10 11:33
*/
public boolean containsValue(K value){
for(int i=0;i<size;i ){
if(array[i].value.equals(value)){
return true;
}
}
return false;
}
}