*Map接口
Map<k,v>接口中接收两个泛型,key和value的两个数据类型
Map中的集合中的元素都是成对存在的每个元素由键与值两部分组成,通过键可以找对所对应的值。值可以重复,键不可以重复。
Map接口的方法
put(k,v)
get(k)
remove()
1.put方法:将指定的键与值对应起来,并添加到集合中
方法返回值为键所对应的值
使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;
使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。
2.get方法:获取指定键(key)所对应的值(value)
3.remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)
Keyset()方法(该方法是Map的方法)
获取Map集合中的所有的key,并放入Set集合中
Map<String,Integer> m=new HashMap<String,Integer>();
Set<String> set=m.keySet();
Entry(是键值关系映射的对象,每个对象中存储key和对应的value)是Map接口中的一个静态内部接口,用Map.Entry<k,v>的方法调用,使用Map中的Entryset()方法返回Entry对象,并放入set集合中
Set<Map.Entry<String,Integer>> set=m.entryset();
(此处用到了泛型的嵌套,因为Entry接口为Map的内部静态接口,所以调用的时候需要用到Map.的方式进行调用,entrySet()方法是Map接口的方法,直接用Map调用)
//使用迭代器的方式对该Map集合进行遍历
- 使用Keyset()方法进行遍历
//定义一个Map集合
Map<String,Integer> map=new HashMap<String,Integer>();
//向集合中添加元素
map.put(“ws”,18);
map.put(“nn”,17);
//使用Keyset()方法获取集合中的所有key,并放入Set集合
Set <String> set=map.Keyset();
(1)使用迭代器进行遍历
//创建迭代器对象
Iterator <String>it=map.iterator();
//使用循环进行迭代
while(it.hasNext()){
String key=it.next();
Integer value=map.get(s);
System.out.println(key+””+value);
}
(2) 使用增强for进行遍历
for(String s:set){
System.out.println(map.get());}
- 使用Entry进行遍历
//创建一个Map集合对象
Map<String,Integer> map=new HashMap<String,Integer>();
//添加元素
map.put("ws", 18);
map.put("nn", 16);
map.put("pp", 21);
//调用entrySet()方法,将Entry对象放入Set集合
Set<Map.Entry<String, Integer>> set=map.entrySet();
(1) 使用迭代器进行遍历
//创建迭代器对象
Iterator<Map.Entry<String,Integer>> it=map.iterator();
//使用while循环进行遍历
while(it.hasNext()){
//使用Entry对象的getKey方法和getValue方法
Map.Entry<String,Integer> e=it.next();
String key=e.getKey();
Integer value=e.getValue();
System.out.println(key,value);
}
(2) 使用增强for循环遍历
for(Map.Entry<String,Integer> e:set){
System.out.println(e.getKey(),e.getValue());
}
Ps.
for(Map.Entry<String, Person> m:map.entrySet()){
System.out.println(m.getKey()+""+m.getValue());
}
map.entrySet()的返回值为一个set集合所以可以直接写入增强for循环,因为这个set集合中存储的是entry对象,所以,冒号左边为Map.Entry<String, Person>,此为entry对象
*方法的可变参数
格式:数据类型...变量名
可以再方法中传入任意个参数
如下方法
int i =function(1,2,3);
Public static int function(int...a){
int sum=0;
for(int i:a){
Sum+=i
}
Syso(sum)
}
int...a 这里的a就是一个int的数组,传入的参数将存入这个名为的数组中
Ps.1.一个方法中只能有一个可变参数 (int...a,int...b)错
2.参数类表中的可变参数必须放在左后面,(int a,int b,int...c)正确(如果放在前面,所传入的参数都会放入可变参 数的集合中,后面的参数将无法接收到参数)