暑假看了些c++的STL库讲解,里面有些关于集合相关的容器vector,map,list等
现在学了JAVA,对于集合的运用的代码实现还是有些差别的,印象最深的是第一次用JAVA 的map写一个大模拟题,编译器在我用MAP的地方全飘红
我这才发现原来JAVA里全是对象,新建MAP还要NEW一下。总之,经历了一小段时间的学习,对于集合之类的容器理解的还不够透彻
‘不管怎样,先总结一下吧’,总之就是怀着这样的念头。
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。
Map 接口中提供的常用方法
V get(Object key)返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型
V put(K key, V value)向 Map 集合中添加键-值对,返回 key 以前对应的 value,如果没有, 则返回 null
V remove(Object key)从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果没有,则返回null
Set entrySet()返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry
Set keySet()返回 Map 集合中所有键对象的 Set 集合
通过迭代器来遍历MAP 也会给我们带来很多方便之处
import java.util.*;
public class Main {
public static void main(String[] args) {
HashMap users = new HashMap();
Scanner input = new Scanner(System.in);
System.out.println("请输入战斗机体数量");
int n=input.nextInt();
for(int i=0;i<n;i++){
System.out.println("请输入第"+(i+1)+"机体编号");
int stunum=input.nextInt();
System.out.println("请输入第"+(i+1)+"机体型号");
String name=input.next();
users.put(stunum,name);
}
System.out.println("******** 学生列表 ********");
Iterator it = users.keySet().iterator();//迭代器
while (it.hasNext()) {// 遍历 Map
Object key = it.next();
Object val = users.get(key);
System.out.println("编号:" + key + ",型号:" + val);
}
System.out.println("请输入要删除的学号:");
int num = input.nextInt();
if (users.containsKey(num) ){// 判断是否包含指定键
users.remove(num);} // 如果包含就删除
else {
System.out.println("该机体不存在!");
}
System.out.println("******** 机体列表 ********");
it = users.keySet().iterator();
while (it.hasNext()) {
Object key = it.next();
Object val = users.get(key);
System.out.println("编号:" + key + ",型号:" + val);
}
}
}
测试数据