码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器遍历【List、Set、Map】&& 遍历集合的方法总结 && Collections工具类

时间:2018-09-14 23:15:52      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:man   增强for循环   重写   根据   遍历   list   lin   递增   建议   

整理&&总结

迭代器遍历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 }
View Code

遍历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) 遍历集合元素时不需要强制转换。

迭代器遍历【List、Set、Map】&& 遍历集合的方法总结 && Collections工具类

标签:man   增强for循环   重写   根据   遍历   list   lin   递增   建议   

原文地址:https://www.cnblogs.com/cao-yin/p/9643296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!