> 技术文档 > javaSE 6.2

javaSE 6.2


目录

二. 双列结合Map接口:

     (1).HashMap类:

     1.定义:

     2.方法及代码:

     3.Map的遍历方式

     4.HashMap源码解读

 

   (2).TreeMap类: 

          1.定义:

          2.方法及代码:

     (3).HashTable类:

          1.定义: 

          2.代码及方法:

三.collections类

      1.定义:

      2. 方法及代码:

      3.注意:


二. 双列结合Map接口:

      可以存储一组键值对 , 键不能重复 , 值可以重复

     (1).HashMap类:

          1.定义:

           底层使用的数据结构 : 哈希表(数组) 链表 红黑树,储存的键只能有一个为null,值都可以为null

           图像理解:

           

          2.方法及代码:
package Map.HashMap;import java.util.Collection;import java.util.HashMap;public class HashMapDemo1 { public static void main(String[] args) { HashMap map = new HashMap(); map.put(\"j\",\"jk\");//(键,值),hashMap会算出哈希值进行排序,一般用String类型作为键(key),值可以是Integer Stirng... map.put(\"a\",\"aa\"); map.put(\"c\",\"null\"); map.put(\"b\",\"null\"); map.put(\"null\",\"xx\"); map.put(\"k\",\"kkk\"); map.put(\"a\",\"aaaa\"); //map.clear();//清除全部 System.out.println(map.remove(\"j\"));//通过键(key)删除,并返回键所对应的值 //判断 System.out.println(map.containsKey(\"a\"));//判断是否包含指定的键(key) System.out.println(map.containsValue(\"aaaa\"));//判断是否包含指定的value System.out.println(map.isEmpty());//判断集合是否为空 //返回 System.out.println(map.size());//返回集合中元素的个数 System.out.println(map.get(\"k\"));//返回键(key)所对应的值(value) //返回单列键(key) Collection keys= map.keySet(); System.out.println(keys); //返回单列值(value) Collection values = map.values(); System.out.println(values); System.out.println(map); }}
     3.Map的遍历方式

         方式1(不推荐) : 先拿到key , 循环key , 每次拿一个key , 然后在map中找对应值
         方式2(推荐) :    为了遍历方便,将所有键值对重新提取,存储到一个entry类型的集合当中

package Map.HashMap;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;public class HashMapDemo3 { public static void main(String[] args) { HashMap map = new HashMap(); map.put(\"j\",\"jk\"); map.put(\"a\",\"aa\"); map.put(\"c\",\"null\"); map.put(\"b\",\"null\"); map.put(\"null\",\"xx\"); map.put(\"k\",\"kkk\"); map.put(\"a\",\"aaaa\"); //map的遍历方式 //方式1(不推荐):先拿到key,循环key,每次拿一个key,然后在map中找对应值 Collection keys= map.keySet();//返回单列键(key) for (String key : keys) { System.out.println(key+\":\"+map.get(key)); } //方式2(推荐):为了遍历方便,将所有键值对重新提取,存储到一个entry类型的集合当中 Set<Map.Entry> entries = map.entrySet(); for (Map.Entry entry:entries){ System.out.println(entry.getKey()+\":\"+entry.getValue()); } System.out.println(map); }}
     4.HashMap源码解读

   (2).TreeMap类: 

          1.定义:

             底层是红黑树结构 , 可以根据自然顺序排序 .

           注意 : 如果需要得到一个有序的 Map 就应该使用TreeMapkey值的类型必须实现                                       Comparable接口,重写compareTo方法。

          2.方法及代码:
package Map.TreeMap;import java.util.TreeMap;public class TreeMapDemo { public static void main(String[] args) { TreeMap treeMap = new TreeMap();  treeMap.put(2,22);  treeMap.put(4,44);  treeMap.put(3,33);  treeMap.put(1,11);  treeMap.put(4,55); System.out.println(treeMap);//会排好序 }}

     (3).HashTable类:

          1.定义: 

           哈希结构,无序的,方法中添加了同步锁(在多线程场景下是安全的),不能存储为null  

          2.代码及方法:
package Map.Hashtable;import java.util.Hashtable;public class HashtableDemo { public static void main(String[] args) {  Hashtable hashtable = new Hashtable();  hashtable.put(\"a\",\"a\");  hashtable.put(\"m\",\"a\");  hashtable.put(\"k\",\"o\");  hashtable.put(\"v\",\"s\");  //hashtable.put(\"null\",\"b\");//会报错 System.out.println(hashtable); }}

三.collections类

      1.定义:

               Collections类      是集合类  , 包含很多静态方法
               Collection接口    是单列集合中最大的接口

      2. 方法及代码:

import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;public class CollectionsDemo { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add(1); arrayList.add(5); arrayList.add(4); arrayList.add(4); arrayList.add(3); //排序 Collections.sort(arrayList); //二分查找 如果有就返回所找的值 System.out.println(Collections.binarySearch(arrayList,55)); //交换 Collections.swap(arrayList,0,3);//交换两个指定位置的元素*/ System.out.println(arrayList); ArrayList arrayList1 = new ArrayList(); arrayList1.add(6); arrayList1.add(7); arrayList1.add(8); Collections.copy(arrayList,arrayList1);//[6, 7, 8, 4, 3]会把原来数组的值覆盖 Collections.fill(arrayList1,9);//把9填充到数组当中 Collections.replaceAll(arrayList,4,88);//将原元素替换为指定元素 Collections.reverse(arrayList1);//逆序 Collections.shuffle(arrayList);//随机排序 System.out.println(arrayList); test(20,30,40,50,60,70); Collections.addAll(arrayList1,1,2,3,4,5,6,7);//把一个可变长度的参数添加到指定参数中 } //int...c 是长度可变参数 本质是一个数组,一个参数列表中,只能有一个长度可变的参数且必须放在参数列表的末尾 public static void test(int a,int b,int...c){ System.out.println(Arrays.toString(c)); }}

     3.注意:

              int...c 是长度可变的参数 本质是一个数组,

              一个参数列表中,只能有一个长度可变的参数 且 必须放在参数列表的末尾