标签:sys main boolean tree rgs remove link null list
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<list.size();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<list.size();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 自动生成的构造函数存根 } }
JAVA——Map和HashMap的基本用法以及自己实现HashMap
标签:sys main boolean tree rgs remove link null list
原文地址:https://www.cnblogs.com/zmt-blackpink-JL/p/13548816.html