java集合类主要有以下集中:

List结构的集合类:

  ArrayList类, LinkedList类, Vector类, Stack类

Map结构的集合类:

  HashMap类,Hashtable类

Set结构的集合类:

  HashSet类, TreeSet类

Queue结构的集合:

  Queue结构

集合类,重要的增删改查。 使用集合类,需要 引入java.util.*;包

hashmap四种遍历

public static void main(String[] args) {

  Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3"); //第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
} //第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
} //第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
} //第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}

hashmap和hashtable的区别

hashmap与hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别:

  一. 历史原因

  hashtable是基于陈旧的dictionary类的,hashmap是java 1.2 引进的map接口的一个实现

  二. 同步性

  hashtable是同步的 ,这个类中的一些方法保证了hashtable中你给的对象是线程安全的。而hashmap则是异步的,因此hashmap中的对象并不是线程安全的。因为 同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用hashmap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率。

  三. 值: hashmap是可以让你将空值作为一个表的条目的key或value,但是 hashtable是不能放入空值的(null)

ArrayList和Vector的区别

  ArrayList与Vector都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也是有区别:

  一. 同步性

  Vector是同步的。这个类中的一些方法 保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全你的集合那么使用ArrayList是个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

  二.  数据增长

  从内部实现机制来讲 ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数据目前 的长度,他们都需要扩展内部数组的长度,Vector缺省情况下自动增长原一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占空间总是比你实际需要的要大。所以,如果你要在集合 中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合初始化大小来避免不必要的资源开销。

  总结:

  1. 如果要求线程安全,使用Vector,Hashtable

  2. 如果不要求线程安全,应使用ArrayList,LinkedList,Hashmap

  3. 如果要求键值对,则使用hashmap,hashtable

  4. 如果 数据量 很大,又要线程安全考虑vertor

java基础 集合类的更多相关文章

  1. JAVA基础——集合类汇总

    一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  2. java基础集合类——ArrayList 源码略读

    ArrayList是java的动态数组,底层是基于数组实现. 1. 成员变量 public class ArrayList<E> extends AbstractList<E> ...

  3. 【java基础之jdk源码】集合类

    最近在整理JAVA 基础知识,从jdk源码入手,今天就jdk中 java.util包下集合类进行理解 先看图 从类图结构可以了解 java.util包下的2个大类: 1.Collecton:可以理解为 ...

  4. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

  5. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  6. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  7. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  9. Java基础知识学习(一)

    部门接了新项目,后台使用Java框架play framework,前端是html,前后台通过rest交互,能够支持多端的互联网架构. 因为之前没有Java基础,前端使用的也很少,决定深入学习一下Jav ...

随机推荐

  1. video标签播放视频

    <!doctype html> <html> <head> <meta charset=utf-8> <title>测试</title ...

  2. Map接口,Map.Entry,hashMap类,TreeMap类,WeakHashMap。

    Collection接口之前接触过,每次保存的对象是一个对象,但是在map中保存的是一对对象,是以key->value形式保存的. 定义: public interface Map<K,V ...

  3. 关于refs/for/ 和refs/heads/

    1.     这个不是git的规则,而是gerrit的规则, 2.     Branches, remote-tracking branches, and tags等等都是对commite的引用(re ...

  4. .net ServiceStack.Redis 性能调优

    最近在debug生产环境的问题时,发现了ServiceStack 4.0.60版本RedisClient存在一个非常严重的性能问题.在高并发下,PooledRedisClientManager.Get ...

  5. Ubuntu 14.04.1 建立 Android M, Android N 開發環境 與 問題

    # Modify /etc/apt/sources.list# add below 3 lines to /etc/apt/sources.listdeb http://archive.ubuntu. ...

  6. MySql分页算法

    PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇"Efficient Pagination Using MySQL"的报告, ...

  7. spring-初始化完成后运行指定内容

    方案1:继承ApplicationListener public class InstantiationTracingBeanPostProcessor implements ApplicationL ...

  8. 使用IntelliJ IDEA 配置Maven(入门)

    1. 下载Maven 官方地址:http://maven.apache.org/download.cgi 解压并新建一个本地仓库文件夹 2.配置本地仓库路径   3.配置maven环境变量      ...

  9. gulp watch出现Error: watch null EPERM的问题解释

    出现这样的问题,一般是第一次运行导致的,而且任务上有删除文件的操作. 我观察发现,只要把输出目录的文件删除,然后重新运行watch就一些ok,后者再运行一次gulp watch就一切正常.

  10. phpexcel导入数据部分数据有误

    数据在excel中是这样的: 插入数据库后是这样的: 很难发现,出错的那几条数据中的单元格中都有英文','符号,而phpexcel又是以','来拼接读取到的数据的. 解决办法:修改代码中的','为不常 ...