Map集合实例练习三--HashMap与arrayList的几种遍历方式,重点!请一定要掌握熟练

    本章节是基于实例练习一与练习二的练习实例:

以下是string的常用判断,在实际开发中,经常使用到。

1 isNotEmpty(str)等价于 str != null && str.length > 0
2 isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0
3 同理
4 isEmpty 等价于 str == null || str.length == 0
5 isBlank  等价于 str == null || str.length == 0 || str.trim().length == 0
6 str.length > 0 && str.trim().length > 0  --->   str.length > 0

ArrayList的几种遍历方式:

package cn.arrays;
import java.util.ArrayList;
public class ArrayList2 {
	public static void main(String[] args) {
		//创建一个arraylist集合,遍历arrayList集合
		ArrayList<String> list = new ArrayList<String>();
		list.add("加油");
		list.add("努力");
		list.add("奋斗");
		list.add("自信");
		System.out.println("arrayList集合遍历,方法一");
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		System.out.println("arrayList集合遍历,方法二");
		for (String a : list) {
			System.out.println(a);
		}
	}
}

以上输出结果:

arrayList集合遍历,方法一
加油
努力
奋斗
自信
arrayList集合遍历,方法二
加油
努力
奋斗
自信
 

 

HashMap的几种遍历方式:

package cn.collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class TestMap2 {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "努力");
        map.put(2, "加油");
        map.put(3, "奋斗");
        map.put(4, "自信");
        map.put(5, "永不放弃");// 和上面相同 , 会自己筛选
        System.out.println("size的大小"+"...."+map.size());
        
        System.out.println("第一种:通过Map.keySet遍历key和value:");
        for (Integer in : map.keySet()) {
            //map.keySet()返回的是所有key的值
            String str = map.get(in);//得到每个key多对用value的值
            System.out.println(in + "     " + str);
        }
        // 第二种:
        System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:");
        Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
             Map.Entry<Integer, String> entry = it.next();
               System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }
        // 第三种:推荐,尤其是容量大时
        System.out.println("第三种:通过Map.entrySet遍历key和value");
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            //Map.entry<Integer,String> 映射项(键-值对)  有几个方法:用上面的名字entry
            //entry.getKey() ;entry.getValue(); entry.setValue();
            //map.entrySet()  返回此映射中包含的映射关系的 Set视图。
            System.out.println("key= " + entry.getKey() + " value= "
                    + entry.getValue());
        }
        // 第四种:
        System.out.println("第四种:通过Map.values()遍历所有的value,但不能遍历key");
        for (String v : map.values()) {
            System.out.println("value= " + v);
        }
        //增强for一定要掌握,使用keySet
        System.out.println("这个一定要掌握,使用keySet");
        for (Integer a : map.keySet()) {
        	 System.out.println(a + "     " + map.get(a));
		}
    }
}

以上输出的结果为:

size的大小....5
第一种:通过Map.keySet遍历key和value:
1     努力
2     加油
3     奋斗
4     自信
5     永不放弃
第二种:通过Map.entrySet使用iterator遍历key和value:
key= 1 and value= 努力
key= 2 and value= 加油
key= 3 and value= 奋斗
key= 4 and value= 自信
key= 5 and value= 永不放弃
第三种:通过Map.entrySet遍历key和value
key= 1 value= 努力
key= 2 value= 加油
key= 3 value= 奋斗
key= 4 value= 自信
key= 5 value= 永不放弃
第四种:通过Map.values()遍历所有的value,但不能遍历key
value= 努力
value= 加油
value= 奋斗
value= 自信
value= 永不放弃
这个一定要掌握,使用keySet
1     努力
2     加油
3     奋斗
4     自信
5     永不放弃

总结:         

       1.线程安全的是vertor和HashTable。
       2. List:允许重复的,全部有序(允许null)。
  3.Set: HashSet无序的表现(一个null),其中HashSet的子类LinkedHashSet有序,TreeSet有序。
  4.Map:HashMap无序的表现(一次null),其中HashMap的子类LinkedHashMap有序,TreeMap有序,HashTable无序(不能为null)。

  5.ArrayList:查询效率高,增删效率低。
  6.LinkedList:查询效率低,增删效率高。
  7.Vertor:执行效率非常低。

  8.HashSet:良好的增删查询性能。
  9.LinkedHashSet:查询效率低,插入效率比HashSet低。

  10.Map对象高于List。因为Map除了Value外还需要一个Object的Key,从而增大了Map的容量。

     11. HashSet,HashMap的元素都是无序的,而他们的子类都是有序的,双向链表,非常类似,因为HashMap中的唯一的约束就是key,而 key恰恰是被HashMap维护的
       12.TreeSet和TreeMap都是有序的,两个很类似。

       13. 如果Map知道了Key,List知道了index,其性能在一百万条数据中无多大差别。

   14.List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于 Set,而不关心它的序否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的 顺序。如果添加元素的顺序对你很重要,应该使LinkedHashSet或者LinkedHashMap。

      15.HashMap就是使用对象的hashCode()进行快速查询的。此方法能够显着提高性能。

简单数据结构

数据结构指的数据存储和组织方式,如日常的容器中,有方形、圆形、存放液体、固体,都是。

我们在前边见到了多种不同结构的集合,每种集合有各自数据结构特点,总结如下:

数组结构:一块连续的存储区域

链表结构:每个元素指向下一个元素

队列结构:容器先进先出的规则

栈结构:容器先进后出规则

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值