Map接口
实现Map接口的类用来存储 键-值(key-value) 对。
Map接口的实现类又HashMap和TreeMap等。
Map类中存储的键-值对通过键来标识,所以键值(作为索引)不能重复(若两个对象相互equals,他们的hashCode必须一样),如果重复的话,则会覆盖掉相同的那个键值所对应的内容。
相应的用法如下:
public class TestM {
public static void main(String[] args) {
Map<Integer,String> m=new HashMap<>();
m.put(1,"aa");//存放
m.put(2,"bb");
m.put(3,"cc");
System.out.println(m.get(2));//取出
System.out.println(m.size());
System.out.println(m.isEmpty());
System.out.println(m.containsKey(1));
System.out.println(m.containsValue("dd"));
Map<Integer,String> m1=new HashMap<>();
m1.put(1,"ss");
m.putAll(m1);
System.out.println(m);
//键不能重复
m.put(2,"ww");
System.out.println(m);
}
}
public class TestM1 {
public static void main(String[] args) {
People p1=new People(123,"tom",3000);
People p2=new People(133,"jerry",3500);
People p3=new People(143,"tim",4000);
Map<Integer,People> m=new HashMap<>();
m.put(123,p1);
m.put(133,p2);
m.put(143,p3);
People pe=m.get(123);
System.out.println(pe.getName());
System.out.println(pe);
}
}
class People{
private int id;
private String name;
private double salary;
public People (int id,String name,double salary){
super();
this.id=id;
this.name=name;
this.salary=salary;
}
@Override
public String toString(){
return "id:"+id+"name:"+name+"salary"+salary;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
}
迭代器
概述:帮助我们做集合遍历的工具。
作用:java中提供了很多种集合,它们在存储元素时,采用的存储方式不同。所以当我们要取出这些集合中的元素时,可以通过一种通用的获取方式来完成。
用迭代器遍历list,set,map:
public class Testd {
public static void main(String[] args) {
test();
testset();
testmap();
}
public static void test(){
List<String> list=new ArrayList<>();
list.add("sss");
list.add("www");
list.add("qqq");
//使用迭代器遍历
for (Iterator<String> it = list.iterator(); ((Iterator) it).hasNext();){
Object t= ((Iterator) it).next();
System.out.println(t);
}
}
public static void testset(){
Set<String> set = new HashSet<>();
set.add("sss");
set.add("www");
set.add("qqq");
//使用迭代器遍历
for (Iterator<String> it = set.iterator(); ((Iterator) it).hasNext(); ) {
Object t = ((Iterator) it).next();
System.out.println(t);
}
}
public static void testmap() {
Map<Integer,String> map = new HashMap<>();
map.put(10,"sss");
map.put(20,"www");
map.put(30,"eee");
//使用迭代器遍历
Set<Map.Entry<Integer,String>> ss=map.entrySet();
for(Iterator<Map.Entry<Integer,String>>it=ss.iterator();it.hasNext();){
Map.Entry<Integer,String> t=it.next();
System.out.println(t.getKey()+"--"+t.getValue());
}
}
}