Map集合
来源:互联网 发布:windows to go移动硬盘 编辑:程序博客网 时间:2024/05/17 19:14
1.
Map集合
需求:存储学生对象,每一个学生一个学号和姓名,通过学号去找学生,按照之前集合的操作,将学号和姓名作为当前类的成员封装起来,
然后遍历集合,将学号和学生姓名,没有必要这样去实现,因为如果很直接能拿到学生姓名,在遍历没意义!
java就提供了另一个集合Map集合<K,V>,是以一种键值对而存在
学号1 姓名1
学号2 姓名2
学号3 姓名3
学号2 姓名4(错误了)
学号4 姓名4
对于Map集合,针对的是键有效,跟值没有关系,键是唯一的,值是可以重复的!
对于Map集合,是一种键值对的一种映射关系,键是唯一的,值是可以重复的!(双列集合) 简单记:夫妻对
hashMap,treeMap子实现类
Collection:集合框架的顶层的根接口,有两个子接口:List(元素可以重复),set(元素不可以重复的),单列集合 简单记:光棍(11.11)
ArrayList,Vector,LinkedListtree Set,hashSet
V put(K key,V value):添加元素(键和值的具体元素)
其他用法:如果键是第一次存储的时候,返回值null(小细节)
如果键已经存在,再次存储的时候将第一次的值返回,并且后面的值覆盖掉前面的值
删除功能:
void clear()从此映射中移除所有映射关系(移出所有的键和值)
V remove(Object key):删除键,返回值
判断功能:
boolean containsKey(Object key):判断当前Map集合中是否存在key:键
boolean containsValue(Object value):判断当前Map姐中是否存在value:值
获取功能:
Set<Map.Entry<K,V>> entrySet()???
V get(Object key)返回指定键所映射的值
Set<K> keySet():获取所有的键的集合
Collection<V> values():获取所有的值的集合
长度功能
int size()
转换:
1)获取所有的键的集合keySet()(这种比较常用)
2)遍历键的集合,让键找值
3)输出就可以了
2.
Collections:对集合操作的工具类--------------->Arrays:对数字进行操作的工具类
Collections和Collection的区别?
Collection:集合:顶层次的一个根接口,有两个子接口:List,Set
Collections:对集合操作的工具类,具体的类:它针对集合进行操作!
public static <T> void sort(List<T> list):默认自然排序:将集合中的元素升序排序
public static <T> int binarySearch(List> list,T key):二分查找搜索法:key:查找的元素
public static void reverse(List list):反转功能
public static void shuffle(List<?> list):随机置换,打乱顺序
3.
3.
HashMap集合是哈希表组成,并且他们的键允许null,值也可以允许null,该类与Hasbtable(不允许有null键和null值,)类似,
该类不能保证被元素的顺序恒久不变.
4.
Hashtable和HashMap的区别:
HashMap集合:允许有null键和null值,从线程的角度考虑:他是一个线程不安全,不同步,执行效率高
Hashtable集合:不允许有null键,从线程的角度考虑:他是一个线程安全的,同步,效率低
面试题:
List集合,Set集合,是继承自Map集合吗?
Map集合和Collection是不一样的,List,Set集合是Collection集合的两个子接口,跟Map没有关系,
Map集合:
子实现类:HashMap/TreeMap集合
5
实现:
(基础班)
陈玉楼 20
高跃 22
(就业班)
实现:
三国演义
吕布
周瑜
笑傲江湖
令狐冲
林平之
神雕侠侣
郭靖
杨过
HashMap嵌套ArrayList
3.
要求
周瑜---小乔
吕布---貂蝉
郭靖---黄蓉
杨过---小龙女
令狐冲---任盈盈
林平之---岳灵珊
ArrayList嵌套HAshMap
Map集合
需求:存储学生对象,每一个学生一个学号和姓名,通过学号去找学生,按照之前集合的操作,将学号和姓名作为当前类的成员封装起来,
然后遍历集合,将学号和学生姓名,没有必要这样去实现,因为如果很直接能拿到学生姓名,在遍历没意义!
java就提供了另一个集合Map集合<K,V>,是以一种键值对而存在
学号1 姓名1
学号2 姓名2
学号3 姓名3
学号2 姓名4(错误了)
学号4 姓名4
对于Map集合,针对的是键有效,跟值没有关系,键是唯一的,值是可以重复的!
1.2
面试题:
Map集合和Collection区别?对于Map集合,是一种键值对的一种映射关系,键是唯一的,值是可以重复的!(双列集合) 简单记:夫妻对
hashMap,treeMap子实现类
Collection:集合框架的顶层的根接口,有两个子接口:List(元素可以重复),set(元素不可以重复的),单列集合 简单记:光棍(11.11)
ArrayList,Vector,LinkedListtree Set,hashSet
1.3
Map集合的功能:
添加功能:V put(K key,V value):添加元素(键和值的具体元素)
其他用法:如果键是第一次存储的时候,返回值null(小细节)
如果键已经存在,再次存储的时候将第一次的值返回,并且后面的值覆盖掉前面的值
删除功能:
void clear()从此映射中移除所有映射关系(移出所有的键和值)
V remove(Object key):删除键,返回值
判断功能:
boolean containsKey(Object key):判断当前Map集合中是否存在key:键
boolean containsValue(Object value):判断当前Map姐中是否存在value:值
获取功能:
Set<Map.Entry<K,V>> entrySet()???
V get(Object key)返回指定键所映射的值
Set<K> keySet():获取所有的键的集合
Collection<V> values():获取所有的值的集合
长度功能
int size()
转换:
1)获取所有的键的集合keySet()(这种比较常用)
2)遍历键的集合,让键找值
3)输出就可以了
public class HashMapDemo3 {public static void main(String[] args) {//创建Map集合对象Map<String,String> map = new HashMap<String,String>();//给集合中添加元素map.put("杨过", "小龙女") ;map.put("郭靖", "黄蓉") ;map.put("杨康", "穆念慈") ;map.put("陈玄风", "梅超风") ;//获取所有的键的集合Set<String> keySet = map.keySet() ;//遍历所有的键的集合,增强forfor(String key : keySet){String value = map.get(key) ;System.out.println(key+"="+value);}}}
2.
Collections:对集合操作的工具类--------------->Arrays:对数字进行操作的工具类
Collections和Collection的区别?
Collection:集合:顶层次的一个根接口,有两个子接口:List,Set
Collections:对集合操作的工具类,具体的类:它针对集合进行操作!
public static <T> void sort(List<T> list):默认自然排序:将集合中的元素升序排序
public static <T> int binarySearch(List> list,T key):二分查找搜索法:key:查找的元素
public static void reverse(List list):反转功能
public static void shuffle(List<?> list):随机置换,打乱顺序
3.
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * 创建一个集合对象,用来存储自定义对象! * */public class CollectionsTest {public static void main(String[] args) {//创建集合对象//list集合元素是可以重复的!List<Student> list = new ArrayList<Student>();//创建5个学生对象Student s1 = new Student("高圆圆", 27) ;Student s2 = new Student("邓超", 25) ;Student s3 = new Student("黄晓明", 27) ;Student s4 = new Student("刘德华", 40) ;Student s5 = new Student("高圆圆", 27) ;//添加到集合list.add(s1) ;list.add(s2) ;list.add(s3) ;list.add(s4) ;list.add(s5) ;//自然排序,一定要在当前的类Student中实现Compareable接口// Collections.sort(list);//如果用Collections集合工具类对自定义对象同时进行自然排序和比较器排序,哪个起作用?//比较器排序起主要作用//public static <T> void sort(List<T> list,Comparator c):比较器排序Collections.sort(list,new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {//比较器排序//比较器排序年龄从大到小int num = s2.getAge()-s1.getAge() ;int num2 = num==0? s1.getName().compareTo(s2.getName()) :num ;return num2;}});//遍历for(Student s : list){System.out.println(s.getName()+"---"+s.getAge());}}}
3.
HashMap集合是哈希表组成,并且他们的键允许null,值也可以允许null,该类与Hasbtable(不允许有null键和null值,)类似,
该类不能保证被元素的顺序恒久不变.
4.
Hashtable和HashMap的区别:
HashMap集合:允许有null键和null值,从线程的角度考虑:他是一个线程不安全,不同步,执行效率高
Hashtable集合:不允许有null键,从线程的角度考虑:他是一个线程安全的,同步,效率低
面试题:
List集合,Set集合,是继承自Map集合吗?
Map集合和Collection是不一样的,List,Set集合是Collection集合的两个子接口,跟Map没有关系,
Map集合:
子实现类:HashMap/TreeMap集合
5
实现:
(基础班)
陈玉楼 20
高跃 22
(就业班)
李杰 21
曹石磊 23
HashMap嵌套HashMappublic class HashMapHashMap {public static void main(String[] args) {HashMap<String, HashMap<String, Integer>> HS = new HashMap<String, HashMap<String,Integer >>();HashMap<String, Integer> hs1 = new HashMap<String, Integer>();hs1.put("陈玉楼", 20);hs1.put("高越", 22);HS.put("基础班", hs1);HashMap<String, Integer> hs2 = new HashMap<String, Integer>();hs2.put("李杰", 21);hs2.put("曹世磊", 23);HS.put("就业班", hs2);Set<String> k = HS.keySet();//获取最外面一层的键for(String key: k){System.out.println(key);HashMap<String, Integer> value = HS.get(key);//键获取值(即里面的HashMap集合)Set<String> vk = value.keySet();//值获取键for(String valuekey : vk){ Integer valuevalue = value.get(valuekey); System.out.println("\t"+valuekey+valuevalue);}}}}
实现:
三国演义
吕布
周瑜
笑傲江湖
令狐冲
林平之
神雕侠侣
郭靖
杨过
HashMap嵌套ArrayList
public class HashMapArrayList {public static void main(String[] args) {HashMap<String, ArrayList<String>> HS = new HashMap<String, ArrayList<String>>();ArrayList<String> arr1 = new ArrayList<String>();arr1.add("吕布");arr1.add("周瑜");HS.put("三国演义", arr1);ArrayList<String> arr2 = new ArrayList<String>();arr2.add("令狐冲");arr2.add("林平之");HS.put("笑傲江湖", arr2);ArrayList<String> arr3 = new ArrayList<String>();arr3.add("郭靖");arr3.add("杨过");HS.put("神雕侠侣", arr3);Set<String> k = HS.keySet();for(String key : k){System.out.println(key);ArrayList<String> value = HS.get(key);for(String v : value){System.out.println("\t"+v);}}}}
3.
要求
周瑜---小乔
吕布---貂蝉
郭靖---黄蓉
杨过---小龙女
令狐冲---任盈盈
林平之---岳灵珊
ArrayList嵌套HAshMap
public class ArrayLIstHashMap {public static void main(String[] args) {ArrayList<HashMap<String, String>> arr = new ArrayList<HashMap<String, String>>();HashMap<String , String> hs1 = new HashMap<String, String>();hs1.put("周瑜", "小巧");hs1.put("吕布", "貂蝉");arr.add(hs1);HashMap<String, String> hs2 = new HashMap<String, String>();hs2.put("郭靖", "黄蓉");hs2.put("杨过", "小龙女");arr.add(hs2);for(HashMap<String, String> hs : arr){Set<String> k = hs.keySet();for(String key : k){String value = hs.get(key);System.out.println(key+"--"+value);}}}}
阅读全文
0 1
- Map 集合
- Map集合
- Map集合
- map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Maven第一篇【介绍、安装、结构目录】
- Android Studio的快捷键
- CentOS 下 cp 命令
- HDU-Add More Zero
- laravel——使用composer安装laravel5+时报错content-length mismatch解决方案
- Map集合
- python3.6.1 django1.11.4 初探
- 解决跨域问题
- python数据结构之栈
- ubuntu永久修改主机名
- poj 3517 And Then There Was One(约瑟夫问题)【模板】
- HDU 6090 Rikka with Graph
- Android开发 第二季 第1课 Debug 调试程序
- 使用LinkedList模拟栈数据结构的集合