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 就应该使用TreeMap,key值的类型必须实现 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 是长度可变的参数 本质是一个数组,
一个参数列表中,只能有一个长度可变的参数 且 必须放在参数列表的末尾