美文网首页
Java 集合

Java 集合

作者: Lost_Robot | 来源:发表于2017-11-08 16:16 被阅读58次
1.集合框架的分类

1.Java 中基本的集合框架: Java Collections Framework
提供了对集合的定义,操作,和管理的一组接口。

集合

2.Java 中提供了两种不同的集合实现

接口 子类
Collection<E> 集合类的根接口,Java中没有直接的实现类,但是有继承的接口Set(无序,元素不允许重复)和List(有序,元素可重复,提供按索引访问方式)。
Map<K, V> Java中另一个接口,与collection无关,但是属于集合类,以Key-Value的形式保存数据,Key唯一,但是Value可以重复。
Iterator 所有集合类都实现了该接口,用于遍历集合中元素的接口,3个方法,hasNext()是否还有下一个元素,next()返回下一个元素,remove()删除当前接口。
2.它们的区别

1、List(有序、可重复)
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。

2、Set(无序、不能重复)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

3、Map(键值对、键唯一、值不唯一)
Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

名称 子接口 是否有序 元素是否允许重复
Collection
List
Set AbstractSet
HashSet
TressSet 是(用二叉树排序)
Map Abstractmap k-v映射,K不可重复V可重复
HashMap k-v映射,K不可重复V可重复
TreeMap 是(二叉树排序) k-v映射,K不可重复V可重复
3.集合实现
类名 区别
ArrayList 增删操作较多的情况下,查询较少的情况下使用,两者用法没有区别,功能上有区别
LinkedList 查询较多的情况下,增删较少的情况下使用,,两者用法没有区别,功能上有区别

类名 区别
HashMap 是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的,因为键对象不可以重复,所以HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null,是非同步的
Hashtable 是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢,它继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低。
ConcurrentHashMap 线程安全,并且锁分离。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。
LinkedHashMap 保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。
TreeMap 实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的;
4.使用

Map的遍历(两种方式):

Map map = new HashMap();
map.put(key,value);

//先获取map集合的所有键的set集合,keyset(),将Map中所有的键存入到set集合中。
//因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。
// keySet():迭代后只能通过get()取key 。
//取到的结果会乱序,是因为取得数据行主键的时候,使用了HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的。
Iterator it = map.keySet().iterator();
 //获取迭代器
while(it.hasNext()){
Object key = it.next();
System.out.println(map.get(key));
}

//将map集合中的映射关系取出,存入到set集合
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Entry e =(Entry) it.next();
System.out.println("键"+e.getKey () + "的值为" + e.getValue());
}
//entrySet()方法,效率较高
//对于keySet其实是遍历了2次,一次是转为iterator,一次就是从HashMap中取出key所对于的value。
//对于entryset只是遍历了第一次,它把key和value都放到了entry中,所以快了。两种遍历的遍历时间相差还是很明显的。

5.Android中的使用示例

自己可以写一下

相关文章

  • 一篇文章,全面解读Android面试知识点

    Java Java基础 Java集合框架 Java集合——ArrayList Java集合——LinkedList...

  • 收藏夹

    博文 Java 集合:Java 集合学习指南 Java 集合:Java 集合源码剖析 HashMap:HashMa...

  • Java 集合框架_开篇

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • Java 集合框架_List

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • 9、java集合

    1、什么是java集合 java集合是用来存储多个数据引用的数据类型。 2、java集合分类 java集合类在ja...

  • 【集合框架】

    集合框架(怎么实现、适用场景) hash相关 Java集合框架 Java集合框架综述Java集合框架面试问题集锦 ...

  • Java基础——集合体系Map详解

    Java基础——集合体系Map详解 上文中我们了解了集合体系中的单列集合:Java基础——集合以及Java集合——...

  • Java基础

    Java集合框架 一、Java集合类简介: Java集合大致分为四种体系:Set:无序、不可重复的集合List:有...

  • JavaSE集合类

    JavaSE集合类 概述 Java中集合类概述Java中数组与集合的比较Java中集合框架层次结构 Collect...

  • 集合系列(一):集合框架概述

    集合系列(一):集合框架概述 Java 集合是 Java API 用得最频繁的一类,掌握 Java 集合的原理以及...

网友评论

      本文标题:Java 集合

      本文链接:https://www.haomeiwen.com/subject/fyejpxtx.html