作者:mobiledu2502879733 | 来源:互联网 | 2023-09-24 17:33
Map
Map集合的概述和使用
双列集合一次可以存两个元素 左边称为键,唯一的,右边称为值,可以重复的。对应的关系,称之为键值对
Interface Map K:键的数据类型 V:值得数据类型
键不能重复,值可以重复
键和值是一一对应得,每一个键只能找到自己对应得值
(键+值)这个我们称之为"键值对"或者"键值对对象",在Java中叫做"Entry对象"
例如 学号和学生 一个学号对应一个学生
多态得方式创建
Map得基本使用
public class mapTest {/*Map得基本使用*/public static void main(String[] args) {Map m&#61;new HashMap<>();//添加方法 putm.put("zhangsan","123");m.put("lisi","456");m.put("wangwu","789");System.out.println(m);}
Map得常用方法
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有键值对元素
boolean containsKey(Object key)判断集合是否包含指定得键
boolean containsValue(Object value)判断集合是否包含指定得值
boolean isEmpty()判断集合是否为空
int size 集合得长度&#xff0c;也就是集合中键值对得个数
public class mapTest {/*Map得基本使用*/public static void main(String[] args) {Map m&#61;new HashMap<>();//添加方法 put//如果要添加得键不存在&#xff0c;那么就会把键值对都添加到集合中//如果要添加得键不存在得&#xff0c;那么会覆盖原来得值&#xff0c;把原来得值作为返回值进行返回m.put("zhangsan","123");m.put("lisi","456");m.put("wangwu","789");System.out.println(m);String zhangsan &#61; m.put("zhangsan", "26");System.out.println(zhangsan);System.out.println(m);//删除String zhangsan1 &#61; m.remove("zhangsan");System.out.println(zhangsan1);System.out.println(m);//清空m.clear();System.out.println(m);//containskey 判断集合是否包含指定得键boolean zhangsan2 &#61; m.containsKey("zhangsan");System.out.println(zhangsan2);//true//containsvalue 判断集合是否包含指定得值boolean b &#61; m.containsValue("123");//trueboolean b1 &#61; m.containsValue("999");//false//判断集合是否为空boolean empty &#61; m.isEmpty();System.out.println(empty);//返回的值为布尔值//size 返回得是键值对得个数int size &#61; m.size();System.out.println(size);}}
Map得第一种遍历集合方式
Set keySet() 获取所有键得集合
V get(Object key) 根据键获取值
代码&#xff1a;
public class mapTest {
public static void main(String[] args) {
//获取并添加元素
Map m&#61;new HashMap<>();
m.put("a","1");
m.put("b","2");
m.put("c","3");
//获取到所有得键
Set key &#61; m.keySet();
//i遍历set集合得每一个键
for (String string : key) {
//遍历每一个key&#xff0c;来获取到每一个值
String value &#61; m.get(string);
System.out.println(string&#43;" "&#43;value);
}
}
}
第二种遍历方式
Set>entrySet() 获取键值对对象得集合
K getkey() 获取键
V getValue() 获取值
代码&#xff1a;
public class mapTest {public static void main(String[] args) {//获取并添加元素Map m&#61;new HashMap<>();m.put("a","1");m.put("b","2");m.put("c","3");//获取到所有得键// Set key &#61; m.keySet();// //i遍历set集合得每一个键// for (String string : key) {// //遍历每一个key&#xff0c;来获取到每一个值// String value &#61; m.get(string);// System.out.println(string&#43;" "&#43;value);// }// 获取到所有得键值对对象//Set集合种装的是键值对对像(Entry对象)//而Entry里面装的是键值对Set> entries &#61; m.entrySet();for (Map.Entry entry : entries) {//得到每一个键值对对象String key &#61; entry.getKey();String value &#61; entry.getValue();System.out.println(key&#43;" "&#43;value);}}
第三种遍历方式
public class mapTest {public static void main(String[] args) {//获取并添加元素Map m&#61;new HashMap<>();m.put("a","1");m.put("b","2");m.put("c","3");//获取到所有得键// Set key &#61; m.keySet();// //i遍历set集合得每一个键// for (String string : key) {// //遍历每一个key&#xff0c;来获取到每一个值// String value &#61; m.get(string);// System.out.println(string&#43;" "&#43;value);// }// 获取到所有得键值对对象//Set集合种装的是键值对对像(Entry对象)//而Entry里面装的是键值对// Set> entries &#61; m.entrySet();// for (Map.Entry entry : entries) {// //得到每一个键值对对象// String key &#61; entry.getKey();// String value &#61; entry.getValue();// System.out.println(key&#43;" "&#43;value);// }m.forEach((String key,String value)->{System.out.println(key&#43;" "&#43; value);});}}
HashMap得特点&#xff1a;
HashMap是Map里边得一个实现类
没有额外需要了解得方法&#xff0c;直接用Map得方法就好
HashMap跟HashSet底层一样是哈希表结构
依赖hashCode方法和equals方法保证键唯一
如果键要存储自定义对象&#xff0c;需要重写hashCode和equals方法
TreeMap得特点
TreeMap是Map里边得一个实现类
没有额外需要了解得方法&#xff0c;直接用Map得方法就好
TreeMap跟TreeSet一样底层是红黑树结构得
依赖自然排序或者比较器排序&#xff0c;对键进行排序
如果键是自定义对象&#xff0c;需要实现Comparable接口或者创建TreeMap对象时候给出比较器排序规则
可变参数
就是形参得个数是可变的
格式&#xff1a;
修饰符 返回值类型 方法名(数据类型...变量名){}
范例&#xff1a;public static int sum(int...a){}
这里得变量也就是一个数组
public class test6 {public static void main(String[] args) {int getsum &#61; getsum(1,2,3,4,5);System.out.println(getsum);}private static int getsum(int...arr) {int sum&#61;0;for (int i &#61; 0; i
注意&#xff1a;如果一个方法包含多个参数&#xff0c;可变参数要放到最后