JAVA 集合类2-MAP接口与迭代器
Posted w944372441
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 集合类2-MAP接口与迭代器相关的知识,希望对你有一定的参考价值。
一.泛型(Generic)
由于放入集合中的元素默认都是Object类型,无法看出其本身自有的类型,当对这些元素进行操作时需要转型才可用,这样效率低还易出错,在JDK1.5版本后引入泛型,规定了此集合中的元素类型,增强了程序的可读性和稳定性。
格式:用<>表示,定义的类型必须是引用类型。后面的<>可以省略。
List<Book> list1 = new ArrayList<Book>();
二.Map接口的常用方法
Map接口提供了将键映射到值的对象。一个映射不能包含重复的键,每个键最多只能映射到一个值,Map中的元素是通过键(key)值(value)对的形式进行存储的。
Map接口也有两个子类实现类HashMap(哈希表做索引)和TreeMap(二叉树做索引)。
HashMap常用方法:
public class Test{
public static void main(String[] args) {
Map<Object,Object> map1 = new HashMap<Object,Object>(); //创建HashMap类集合;
map1.put(Object key, Object value); //向集合中添加指定的key与value的映射关系;其返回值是是替换出来的value;
map1.get(Object key); //获取指定键所对应的值;
map1.remove(Object key); //删除指定键所对应的值;返回值为该值;
map1.remove(Object key,Object value); //删除指定键及其所对应的值;如删除成功返回true,否则返回false;
map1.containsKey(Object key); //判断是否包含某个键,有返回true,没有返回false;
map1.containsValue(Object value); //判断是否包含某个值,有返回true,没有返回false;
map1.size(); //获取该集合中有几对映射;
map1.isEmpty(); //判断该集合中是否有元素;
map1.putAll(Map m); //将另一个集合中的元素放入该集合;
map1.clear(); //清除该集合中所有元素;
map1.keySet(); //获取该集合中所有键组成的Set集合;
map1.values(); //获取该集合中所有值对象组成的Collection集合;
//获取map集合中的键值对也可通过遍历方法得到,由于Set类集合没有顺序,需要调用list中的构造方法
Set<Object> set1 = map1.keySet();
List<Object> list1 = new ArrayList(set1);
for (int i = 0; i < list1.size(); i++) {
Object o1 = list1.get(i);
Object o2 = map1.get(o1);
}
}
}
三.迭代器
为了能够遍历所有集合类型中的元素,优先使用Iterator接口创建迭代器,Iterator接口是所有集合的父类。
Iterator接口中只有3个方法:
1.hashNext():如果仍有元素可以迭代,返回true;
2.next():返回迭代的下一个元素;
3.remove():从迭代器指向的collection中移除迭代器返回的最后一个元素;
注意:迭代器中的remove方法, 绝对不可以与list中的remove(Object)方法混用,会抛出ConcurrentModificationException这个异常。
举例说明:
public class Test{
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("qqqq");
list.add("wwww");
list.add("eeee");
Iterator<String> iter = list.iterator();
while(iter.hasNext()) {
String s = iter.next();
System.out.println(s);
if (s.equals("wwww")) {
iter.remove();
}
}
System.out.println(list);
}
}
输出结果为:
qqqq
wwww
eeee
[qqqq, eeee]
四.Collections类
public class Test{
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
Collections.sort(list1);//默认从小到大排序;
Collections.shuffle(list1);//随机排序;
Collections.reverse(list1);//从大到小排序;
Collections.copy(list1, list2);//将list2中的元素复制到list1中,前提是list1中的元素个数不得大于list2中的元素个数;
Collections.fill(list1, Integer);//将list1中的所有元素填充为同一类型的相同元素;
Collections.sort(list1);//对list1中的所有元素进行排序;
Collections.binarySearch(list1, key);//二分查找法,查找list1中的key元素位置,需要先对元素进行排序;
}
}
以上是关于JAVA 集合类2-MAP接口与迭代器的主要内容,如果未能解决你的问题,请参考以下文章
集合 Collection List Set 迭代器 Iterator 元素排序