Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
1)最常用的实现类是HashMap
| 方法名 | 说明 |
| Object put(Object key, Object val) | 以“键-值”对的方式进行存储 |
| Object get(Object key) | 根据键返回相关联的值,如果不存在指定的键,返回null |
| Object remove(Object key) | 删除由指定的键映射的“键-值对” |
| int size() | 返回元素个数 |
| Set keySet() | 返回键的集合 |
| Collection values() | 返回值的集合 |
| boolean containsKey(Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
方法1:通过迭代器Iterator实现遍历
方法2:增强型for循环
方法3:键值对
- package GatherDemo03;
-
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
-
- public class HashMapDemo01 {
-
- public static void main(String[] args) {
- //准备容器:创建HashMap对象
- HashMap
hm = new HashMap(); -
- //准备元素并将元素存储到集合中
- hm.put("CN", "中华人民共和国");
- hm.put("JP", "小日本");
- hm.put("RU", "俄罗斯联邦");
- hm.put("USA", "美利坚合众国");
- hm.put("UK", "大不列颠及北爱尔兰联合王国");
- System.out.println(hm.size());
-
- //遍历键值对的3种方式
- //方式一:获取键的集合,然后在遍历键的集合过程中调用get()方法获取值
- Set
keys2 = hm.keySet(); - for (String key : keys2) {
- //根据键获取值
- String value=hm.get(key);
- System.out.println(key+"---"+value);
- }
-
- System.out.println("********************************");
-
- //方式二:获取键的集合,然后在遍历键的集合过程中调用get()方法获取值
- Set
keys3=hm.keySet(); - Iterator
it = keys3.iterator(); - while (it.hasNext()) {
- String key = it.next();
- //获得键
- String value=hm.get(key);
- System.out.println(key+"---"+value);
- }
-
- System.out.println("********************************");
-
- //方式三:键值对遍历,将hm集合中的键值对整体取出来后放入到Set集合中
- /*
- *1)使用entrySet( )方法将hm集合中的键值对整体取出来放在Set集合中
- *
- *2)然后使用增强for循环或者迭代器取出Set集合中的键值对元素,取出来的
- * 是Object类型,实际,上键值对的真正类型是Map. Entry类型
- *
- *3)所以将取出来的元素强制转换为Map. Entry类型,Map. Entry类中有getKey( )
- * 方法获取键值对的键,有getValue( )方法获取键值对的值
- */
- Set
> keyValues=hm.entrySet(); - for (Map.Entry
me : keyValues) { - //获取键
- String key=me.getKey();
- //根据键获取值
- String value=me.getValue();
- System.out.println(key+"---"+value);
- }
- }
-
- }
- package GatherDemo03;
-
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
-
- public class HashMapDemo01 {
-
- public static void main(String[] args) {
- //准备容器:创建HashMap对象
- HashMap
hm = new HashMap(); -
- //准备元素并将元素存储到集合中
- hm.put("CN", "中华人民共和国");
- hm.put("JP", "小日本");
- hm.put("RU", "俄罗斯联邦");
- hm.put("USA", "美利坚合众国");
- hm.put("UK", "大不列颠及北爱尔兰联合王国");
- System.out.println(hm.size());
-
- //根据键获取对应的值
- Object obj1=hm.get("CN");
- String str1=(String)obj1;
- System.out.println(str1);
- System.out.println(hm.get("CNN"));
-
- //删除集合中的元素
- String str2=hm.remove("JP");
- System.out.println(str2);
-
- System.out.println(hm.size());//删除元素JP,还有4个元素
-
- //获取HashMep集合中所有键值对的键
- Set
keys=hm.keySet(); - for (String key : keys) {
- System.out.println(key);
- }
-
- //获取HashMep集合中所有键值对的值
- Collection
values= hm.values(); - for (String value : values) {
- System.out.println(value);
- }
-
- //查询集合中是否存在指定键对应的键值对
- System.out.println(hm.containsKey("RU"));//true
- System.out.println(hm.containsKey("JP"));//false
-
- }
- }
-
- }
将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性
本质是参数化类型
泛型集合可以约束集合内的元素类型
典型泛型集合ArrayList
1)
2)泛型集合中的数据不再转换为Object
语法:
HashMap
Java集合框架将针对不同数据结构算法的实现都保存在工具类中
Collections类定义了一系列用于操作集合的静态方法
Collections和Collection不同,前者是集合的操作类,后者是集合接口
Collections提供的常用静态方法
1)sort():排序
2)binarySearch():查找
3)max()\min():查找最大\最小值
Collections类可以对集合进行排序、查找和替换操作
实现一个类的对象之间比较大小,该类要实现Comparable接口
重写compareTo()方法
- package GatherDemo04;
-
- import java.util.ArrayList;
- import java.util.Collections;
-
- public class CollectionsDemo01 {
-
- public static void main(String[] args) {
-
- ArrayList
al = new ArrayList(); -
- al.add("qwe");
- al.add("abc");
- al.add("rds");
- al.add("asd");
- al.add("kjh");
- al.add("dgt");
-
- //遍历集合
- for (String string : al) {
- System.out.println(string);
- }
-
- System.out.println("排序后");
- //集合元素升序排序
- Collections.sort(al);
- for (String string : al) {
- System.out.println(string);
- }
-
-
- //查找元素,注意。查找元素之前集合要进行升序排序,否则,不能保证查找结果的正确性
- int index =Collections.binarySearch(al, "abc");
- System.out.println(index);//0
- int index2 =Collections.binarySearch(al, "dsajfhjsadfh");//查找不存在的元素返回负值
- System.out.println(index2);
-
- System.out.println(Collections.max(al));
- System.out.println(Collections.min(al));
- }
-
- }
- package GatherDemo04;
-
- import java.util.ArrayList;
- import java.util.Collections;
-
- public class CollectionsDemo02 {
-
- public static void main(String[] args) {
- // 准备容器:创建集合对象
- ArrayList
al = new ArrayList(); -
- // 准备数据:创建Student对象
- Student stu1 = new Student("张三", 22);
- Student stu2 = new Student("李四", 21);
- Student stu3 = new Student("王五", 25);
- Student stu4 = new Student("赵六", 20);
- Student stu5 = new Student("孙七", 26);
-
- // 将对象存储到集合中
- al.add(stu1);
- al.add(stu2);
- al.add(stu3);
- al.add(stu4);
- al.add(stu5);
-
- // 遍历集合
- for (Student student : al) {
- System.out.println(student);
- }
-
- // 对集合进行排序
- Collections.sort(al);
-
- // 遍历集合
- System.out.println("排序后:");
- for (Student student : al) {
- System.out.println(student);
- }
-
-
- // 输出byte类型的最大值和最小值
- System.out.println(Byte.MIN_VALUE);
- System.out.println(Byte.MAX_VALUE);
-
- System.out.println(Short.MIN_VALUE);
- System.out.println(Short.MAX_VALUE);
-
- }
-
- }