美文网首页
JAVA:Set/List/Map 集合(一)

JAVA:Set/List/Map 集合(一)

作者: 小鱼儿_f32a | 来源:发表于2019-06-20 14:09 被阅读0次

Java集合大致可分为:Set,List和Map 三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map代表具有映射关系的集合。后增加了Queue体系集合,代表一种队列集合实现。

1、collection:存储不唯一、无序的数据;

2、list:存储有序的、不唯一的数据;

3、set:存储无序的、唯一的数据;

4、Map:以键值对的形式存储数据,以键取值。键不能重复、值可以重复。

Java集合框架主要由Collection和Map两个跟接口及其子接口、实现类组成。

一、Collection

1,Collection接口继承树

2.Collection接口是Set,List,Queue接口的父接口,基本操作包括:

add(Object o):增加元素

addAll(Collection c):...

clear():...

contains(Object o):是否包含指定元素

containsAll(Collection c):是否包含集合c中的所有元素

iterator():返回Iterator对象,用于遍历集合中的元素

remove(Object o):移除元素

removeAll(Collection c):相当于减集合c

retainAll(Collection c):相当于求与c的交集

size():返回元素个数

toArray():把集合转换为一个数组

3,Collection遍历

4,Set子接口

4.1 HashSet类

HashSet类是Set接口的典型实现类。特点:

不能保证元素的排列顺序,加入的元素要特别注意hashCode()方法的实现。

HashSet不是同步的,多线程访问同一步HashSet对象时,需要手工同步。

集合元素值可以是null。

4.2 LinkedHashSet类

LinkedHashSet类也是根据元素的hashCode值来决定元素的存储位置,但它同时使用链表维护元素的次序。与HashSet相比,特点:

对集合迭代时,按增加顺序返回元素。

性能略低于HashSet,因为需要维护元素的插入顺序。但迭代访问元素时会有好性能,因为它采用链表维护内部顺序。

4.3 SortedSet接口及TreeSet实现类

TreeSet类是SortedSet接口的实现类。因为需要排序,所以性能肯定差于HashSet。与HashSet相比,额外增加的方法有:

first():返回第一个元素

last():返回最后一个元素

lower(Object o):返回指定元素之前的元素

higher(Obect o):返回指定元素之后的元素

subSet(fromElement, toElement):返回子集合

可以定义比较器(Comparator)来实现自定义的排序。默认自然升序排序。

5. List子接口

List子接口是有序集合,所以与Set相比,增加了与索引位置相关的操作:

add(int index, Object o):在指定位置插入元素

addAll(int index, Collection c):...

get(int index):取得指定位置元素

indexOf(Obejct o):返回对象o在集合中第一次出现的位置

lastIndexOf(Object o):...

remove(int index):删除并返回指定位置的元素

set(int index, Object o):替换指定位置元素

subList(int fromIndex, int endIndex):返回子集合

5.1 ArrayList和Vector实现类

这两个类都是基于数组实现的List类。

ArrayList是线程不安全的,而Vector是线程安全的。但Vector的性能会比ArrayList低,且考虑到兼容性的原因,有很多重复方法。

Vector提供一个子类Stack,可以挺方便的模拟“栈”这种数据结构(LIFO,后进先出)。

结论:不推荐使用Vector类,即使需要考虑同步,即也可以通过其它方法实现。同样我们也可以通过ArrayDeque类或LinkedList类实现“栈”的相关功能。所以Vector与子类Stack,建议放进历史吧。

5.2 LinkedList类

不像ArrayList是基于数组实现的线性表,LinkedList类是基于链表实现的。

另外还有固定长度的List:Arrays工具类的方法asList(Object... a)可以将数组转换为List集合,它是Arrays内部类ArrayList的实例,特点是不可以增加元素,也不可以删除元素。

https://www.cnblogs.com/nayitian/p/3266090.html

相关文章

  • 集合

    java集合接口有List,Set,Map。 List和Set都实现了Collection(对集合排序,遍历)接口...

  • List&Map&Set的操作和遍历

    List&Map&Set的操作和遍历 Java的三大集合即:Set、List、Map。 Set:代表无序、不可重复...

  • java——集合、多线程

    集合 java中的集合一般分为List、Map、Set、Queue。 List 列表集合 ArrayList:最常...

  • List、Set和Map

    java 常用集合list与Set、Map区别及适用场景总结Java中容器[Collection(List,Set...

  • Java集合类初探

    参考原文 一 java集合类简介 1、java集合大致可以分为Set、List、Queue、Map四类。 Set:...

  • Map接口

    Java常用集合为List,Set和Map,其中List和Set都实现了Collection接口,而Map并没有 ...

  • Java基础之集合框架

    一、Java集合类简介: Java集合大致可以分为Set、List、Queue和Map四种体系。 其中Set代表无...

  • Android面试Java基础篇(一)

    问:Java集合类List,Map,Set相关的实现原理。 答:List和Set都是Collection的子类 ...

  • Android面试复习笔记 6

    11.Java基础 1. 集合 List,Set,Queue和Map。List,Set,Queue都是接口,他们都...

  • Java 集合框架分析

    Java 集合框架 包括Collection接口 和Map 接口 Collection集合 Set List Qu...

网友评论

      本文标题:JAVA:Set/List/Map 集合(一)

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