Java集合框架

本文深入解析了Java集合框架中的主要类,包括ArrayList、LinkedList、HashSet等,并对比了ArrayList与LinkedList、HashMap与Hashtable的区别。通过实例演示了HashMap的两种遍历方式。

java常用集合框架类图:
这里写图片描述

一句话描述常用集合

摘自《JAVA核心技术I》

ArrayList       一种可以动态增长和缩减的索引序列
LinkedList      一种可以在任何位置进行高效地插入和删除操作的有序序列
HashSet         一种没有重复元素的无序集合
TreeSet         一种有序集
EnumSet         一种包含枚举类型值得集
LinkedHashSet   一种可以记住元素插入次序的集
HashMap         一种存储键/值关联的数据结构
TreeMap         一种键值有序排列的映射表
EnumMap         一种键值属于枚举类型的映射表
LinkedHashMap   一种可以记住键/值添加次序的映射表
WeakHashMap     一种其值无用武之地后可以被垃圾回收器回收的映射表

ArrayList和LinkedList的区别

参考http://blog.youkuaiyun.com/qianzhiyong111/article/details/6678035
http://www.importnew.com/6629.html

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

结论:
对于需要快速插入,删除元素,应该使用LinkedList。
对于需要快速随机访问元素,应该使用ArrayList。

HashMap与Hashtable的区别

参考http://blog.youkuaiyun.com/qianzhiyong111/article/details/6677885

  1. HashMap允许key和value为null,Hashtable不允许key和value为null;
  2. HashMap不是线程同步的,Hashtable是线程同步的;
  3. HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

HashMap的遍历

  1. 使用keySet,for-each,HashMap.get()
  2. 使用entry
package com.example.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,String> hashMap = new HashMap<String,String>();
        hashMap.put("China", "Chinese");
        hashMap.put("America", "English");
        hashMap.put("Germany", "German");
        hashMap.put("France", "French");
        
        //第一种遍历,使用keySet,for-each,HashMap.get()
        System.out.println("*****first keySet*****");
        Set<String> keys = hashMap.keySet();
        for(String key : keys) {
            System.out.println("key: " + key + ", value: " + hashMap.get(key));
        }

        //第二种,使用entry
        System.out.println("*****second entry*****");
        for(Map.Entry<String, String> entry : hashMap.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println("key: " + key + ", value: " + value);
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值