迭代器遍历ListSetMap&& 遍历集合的方法总结 && Collections工具类
Posted cao-yin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器遍历ListSetMap&& 遍历集合的方法总结 && Collections工具类相关的知识,希望对你有一定的参考价值。
整理&&总结
迭代器遍历Iterator【List、Set、Map】
example
1 package boom.collection; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.HashSet; 6 import java.util.Iterator; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Map.Entry; 10 import java.util.Set; 11 12 /** 13 * 迭代器遍历List、Set、Map 14 * @author Administrator 15 * 16 */ 17 public class IteratorTest { 18 19 public static void main(String[] args) { 20 //testList(); 21 //testSet(); 22 testMap(); 23 } 24 25 private static void testMap() { 26 Map<Integer, String> map = new HashMap<>(); 27 map.put(001, "小喜庆"); 28 map.put(002, "小云云"); 29 map.put(003, "小胖砸"); 30 31 // 遍历map第一种 32 Set<Entry<Integer, String>> ss = map.entrySet(); 33 for (Iterator<Entry<Integer, String>> iterator = ss.iterator(); iterator.hasNext();) { 34 Entry<Integer, String> entry = (Entry<Integer, String>) iterator.next(); 35 System.out.println(entry.getKey() + "=>" + entry.getValue()); 36 } 37 38 // 遍历map第二种(通过键去获取对应的键值对) 39 Set<Integer> keySet = map.keySet(); 40 for (Iterator<Integer> iterator = keySet.iterator(); iterator.hasNext();) { 41 Integer key = (Integer) iterator.next(); 42 System.out.println(key + "=>" + map.get(key)); 43 } 44 45 } 46 47 private static void testSet() { 48 Set<String> set = new HashSet<>(); 49 set.add("谷歌"); 50 set.add("百度"); 51 set.add("搜狗"); 52 53 // 遍历 54 for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) { 55 String string = iterator.next(); 56 System.out.println(string); 57 } 58 } 59 60 private static void testList() { 61 List<String> list = new ArrayList<>(); 62 list.add("Google"); 63 list.add("Baidu"); 64 list.add("SougGou"); 65 66 // 迭代器迭代集合 67 for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) { 68 String string = (String) iterator.next(); 69 System.out.println(string); 70 } 71 } 72 73 }
遍历List方法一:普通for循环
1 for(int i=0;i<list.size();i++){//list为集合的对象名 2 String temp = (String)list.get(i); 3 System.out.println(temp); 4 }
遍历List方法二:增强for循环(使用泛型!)
1 for (String temp : list) { 2 System.out.println(temp); 3 }
遍历List方法三:使用Iterator迭代器(1)
1 for(Iterator iter= list.iterator();iter.hasNext();){ 2 String temp = (String)iter.next(); 3 System.out.println(temp); 4 }
遍历List方法四:使用Iterator迭代器(2)
1 Iterator iter =list.iterator(); 2 while(iter.hasNext()){ 3 Object obj = iter.next(); 4 iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式! 5 System.out.println(obj); 6 }
遍历Set方法一:增强for循环
1 for(String temp:set){ 2 System.out.println(temp); 3 }
遍历Set方法二:使用Iterator迭代器
1 for(Iterator iter = set.iterator();iter.hasNext();){ 2 String temp = (String)iter.next(); 3 System.out.println(temp); 4 }
遍历Map方法一:根据key获取value
1 Map<Integer, Man> maps = new HashMap<Integer, Man>(); 2 Set<Integer> keySet = maps.keySet(); 3 for(Integer id : keySet){ 4 System.out.println(maps.get(id).name); 5 }
遍历Map方法二:使用entrySet
1 Set<Entry<Integer, Man>> ss = maps.entrySet(); 2 for (Iterator iterator = ss.iterator(); iterator.hasNext();) { 3 Entry e = (Entry) iterator.next(); 4 System.out.println(e.getKey()+"--"+e.getValue());
Collections工具类 (collection是接口,collections是工具类)
[java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法]
创建模板进行测试:
1 List<String> list = new ArrayList<>(); 2 for (int i = 0; i < 4; i++) { 3 list.add(i + "小喜庆"); 4 } 5 System.out.println("正常遍历:" + list);
1. void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序。
1 // 递增的方式遍历[自定义类使用comparable接口进行排序] 2 Collections.sort(list); 3 System.out.println("递增遍历:" + list);
2. void shuffle(List) //对List容器内的元素进行随机排列。
1 // 随机排序list中的元素 2 Collections.shuffle(list); 3 System.out.println("随机遍历:" + list);
3. void reverse(List) //对List容器内的元素进行逆续排列 。
1 // 逆序排序 2 Collections.reverse(list); 3 System.out.println("逆序遍历:" + list);
4. int binarySearch(List, Object)//对于顺序的List容器,采用折半查找的方法查找特定对象。
1 // 二分查找法 2 System.out.println(Collections.binarySearch(list, "小云云"));// 没有查到返回一个负值 -5 3 System.out.println(Collections.binarySearch(list, "2小喜庆"));// 查到返回一个对应的下标 2
5.void fill(List, Object) //用一个特定的对象重写整个List容器。
1 //特定的对象重写整个List容器。 2 Collections.fill(list, "Hello"); 3 System.out.println(list);
【1~5】运行图:
集合的总结
1. Collection 表示一组对象,它是集中、收集的意思,就是把一些数据收集起来。
2. Collection接口的两个子接口:
1) List中的元素有顺序,可重复。常用的实现类有ArrayList、LinkedList和 vector。
? ArrayList特点:查询效率高,增删效率低,线程不安全。
? LinkedList特点:查询效率低,增删效率高,线程不安全。
? vector特点:线程安全,效率低,其它特征类似于ArrayList。
2) Set中的元素没有顺序,不可重复。常用的实现类有HashSet和TreeSet。
? HashSet特点:采用哈希算法实现,查询效率和增删效率都比较高。
? TreeSet特点:内部需要对存储的元素进行排序。因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。
3. 实现Map接口的类用来存储键(key)-值(value) 对。Map 接口的实现类有HashMap和TreeMap等。Map类中存储的键-值对通过键来标识,所以键值不能重复。
4. Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。
5. 类 java.util.Collections 提供了对Set、List、Map操作的工具方法。
6. 如下情况,可能需要我们重写equals/hashCode方法:
1) 要将我们自定义的对象放入HashSet中处理。
2) 要将我们自定义的对象作为HashMap的key处理。
3) 放入Collection容器中的自定义对象后,可能会调用remove、contains等方法时。
7. JDK1.5以后增加了泛型。泛型的好处:
1) 向集合添加数据时保证数据安全。
2) 遍历集合元素时不需要强制转换。
以上是关于迭代器遍历ListSetMap&& 遍历集合的方法总结 && Collections工具类的主要内容,如果未能解决你的问题,请参考以下文章
Java集合框架--Collection接口的使用 & 迭代器(Iterator)遍历原理