Map接口:
1、实现Map接口的类用来存储键(key)-值(value)对
2、Map接口的实现类有HashMap和TreeMap
3、Map类中存储的键-值对通过键来标识,所以键值不能重复
常用方法类:
Object put(Object key,Object value);
Object get(Object key);
Object remove(Object key);
boolean containKey(Object key);
boolean containValue(Object value);
int size();
boolean isEmpty();
void putAll(Map t);
void clear();
public class TestMap {
public static void main(String[] args) {
Map map=new HashMap();
map.put("Lisa", new blackPink("Jennie"));
map.put("Rosie", new blackPink("Jisoo"));
//map.remove("Lisa");
blackPink bPink=(blackPink) map.get("Lisa");//get方法返回的是object 要转型 这里是把地址给了bPink
map.remove("Lisa");//只是移出容器
System.out.println(bPink.name);
}
}
class blackPink{
String name;
public blackPink(String name)
{
this.name=name;
}
}
自己实现HashMap:
package collection;
import java.util.LinkedList;
/**
* Map:存放键值对,根据键对象找值对象,键不能重复
* 哈希码是通过对象地址进行计算得出来的
* Map底层是数组+链表
* @author Administrator
*
*/
public class MyMap {
LinkedList [] arr=new LinkedList[999];
int size;
public void put(Object key,Object value)
{
MyEntry entry=new MyEntry(key,value);
int a=key.hashCode()%arr.length;
//a:1000->1 b:10000->13
if(arr[a]==null)
{
LinkedList list=new LinkedList();
arr[a]=list;
list.add(entry);
}
else {
LinkedList list=arr[a];
for(int i=0;i
{
MyEntry entry2=(MyEntry) list.get(i);
if(entry2.equals(key))
{
entry2.value=value;
return ;
}
}
arr[a].add(entry);
}
}
public Object get(Object key)
{
int a=key.hashCode()%arr.length;
if(arr[a]!=null)
{
LinkedList list=arr[a];
for(int i=0;i
{
MyEntry entry=(MyEntry)list.get(i);
if(entry.key.equals(key))
{
return entry.value;
}
}
}
return null;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
}
}
class MyEntry {
Object key;
Object value;
public MyEntry(Object key,Object value)
{
this.key=key;
this.value=value;
}
public MyEntry() {
// TODO 自动生成的构造函数存根
}
}
原文:https://www.cnblogs.com/zmt-blackpink-JL/p/13548816.html