Map笔记:
import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /TreeMap * Map接口: <键,值>对, 重复的键会进行值得覆盖 ,输出顺序和放入顺序是不一定可以保持顺序的! * 修改查询操作: 1.put(key, value), 2.remove(key) 3.putAll(其他map), 复制其他映射中的所有键值对; * 4.get(key),返回指定的键key所映射的值; 5.containsKey(key) /containsValue() 存在指定的键/值,则返回true *----------------------------- * 集合视图方法: * values() * keySet() * entrySet() :[Map.Entry 接口]四个方法:setValue(V value)/getKey()/getValue()/equals(o) *------------------------------ * LinkedHashedMap 是HashMap类的子类,它保持键的顺序与插入的顺序一致! * TreeMap 实现了 SortedMap的接口, SortedMap 接口能保证各项按照关键字升序进行排序(默认自然排序) * 构造方法: TreeMap()/TreeMap(Comparator c)/TreeMap(SortedMap m)/TreeMap(Map m) * -------------- * 二: 集合的输出 * 1.遍历key集 和value集 , Set keyset=mp3.keySet(); 然后使用加强的For循环即可! * 2.遍历value集 , Collection vals= mp3.values(); 然后使用迭代器for遍历: Iterator i= vals.iterator(); * 3.//双向迭代器输出 :ListIterator it = all.listIterator() 正向/反向一波 * 4.遍历键值对! */
测试代码:
public class TestMap { public static void main(String[] args) { Map mp=new HashMap(); mp.put("AAA1",123); mp.put("AAA1",1234); mp.put("AAA2",124); mp.put("AAA3",125); System.out.println("-->"+mp.get("AAA1")); System.out.println(mp); HashMap<String,Integer>ss=new HashMap<String,Integer>(); ss.putAll(mp); System.out.println(ss); Map mp2=new LinkedHashMap(); mp2.put("AAA1",123);mp2.put("AAA1",1234);mp2.put("AAA2",124); mp2.put("AAA3",125); System.out.println(mp2+"----"+mp2.getClass()+"------"); Map mp3=new TreeMap(); mp3.put("AB",123);mp3.put("A",1234); mp3.put("X",124);mp3.put("AX",125); System.out.println(mp3+"----"+mp3.getClass()+"------"); //1.遍历key集 Set keyset=mp3.keySet(); for (Object o: keyset){ System.out.print(" "+o); } System.out.println(); //2.遍历value集 Collection vals= mp3.values(); Iterator i= vals.iterator(); while(i.hasNext()) System.out.print(" "+i.next()); System.out.println(); //3.遍历键值对,方式1: Set st1=mp3.keySet(); for(Object o:st1) System.out.print(o+"---->"+mp3.get(o)+" "); System.out.println(); //方式2 Set st2=mp3.entrySet(); for(Object o:st2){ Map.Entry entry=(Map.Entry) o; System.out.print(entry.getKey()+":"+entry.getValue()+" "); } //双向迭代器输出 :ListIterator 正向/反向一波 ArrayList<String> all=new ArrayList<String>(); all.add("Hello");all.add("__");all.add("World"); ListIterator it=all.listIterator(); System.out.println(" 先正着 ListIterator:"); while(it.hasNext()) System.out.print(" "+it.next()); System.out.println(" 再逆着返回回去 ListIterator:"); while(it.hasPrevious()) System.out.print(" "+it.previous()); } }
测试结果:
-->1234 {AAA3=125, AAA1=1234, AAA2=124} {AAA3=125, AAA1=1234, AAA2=124} {AAA1=1234, AAA2=124, AAA3=125}----class java.util.LinkedHashMap------ {A=1234, AB=123, AX=125, X=124}----class java.util.TreeMap------ A AB AX X 1234 123 125 124 A---->1234 AB---->123 AX---->125 X---->124 A:1234 AB:123 AX:125 X:124 先正着 ListIterator: Hello __ World 再逆着返回回去 ListIterator: World __ Hello