2018-09-21 JAVA的集合类关系总结,基础知识太不扎实了

*面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。

*数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。

*集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

集合框架图

image

image

1、Collection (集合的最大接口)继承关系

——List 可以存放重复的内容

——Set  不能存放重复的内容,所以的重复内容靠hashCode()和equals()两个方法区分

——Queue  队列接口

——SortedSet  可以对集合中的数据进行排序

Collection定义了集合框架的共性功能。 1,添加 add(e); addAll(collection);

2,删除 remove(e); removeAll(collection); clear();

3,判断。 contains(e); isEmpty();

4,获取 iterator(); size();

5,获取交集。 retainAll();

6,集合变数组。 toArray();

*add方法的参数类型是Object。以便于接收任意类型对象。

*集合中存储的都是对象的引用(地址)

2、List的常用子类

List: 特有方法。凡是可以操作角标的方法都是该体系特有的方法。

增 add(index,element); addAll(index,Collection);

删 remove(index);

改 set(index,element); 查 get(index): subList(from,to); listIterator(); int indexOf(obj):获取指定元素的位置。 ListIterator listIterator();

——ArrayList   线程不安全,查询速度快

——Vector  线程安全,但速度慢,已被ArrayList替代

——LinkedList  链表结果,增删速度快

4、Set接口

Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。 |——HashSet:底层数据结构是哈希表。是线程不安全的。不同步。   HashSet是如何保证元素唯一性的呢?   是通过元素的两个方法,hashCode和equals来完成。   如果元素的HashCode值相同,才会判断equals是否为true。   如果元素的hashcode值不同,不会调用equals。

注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。

——TreeSet:

有序的存放:TreeSet  线程不安全,可以对Set集合中的元素进行排序

通过compareTo或者compare方法来保证元素的唯一性,元素以二叉树的形式存放。

5、Object类

*在实际开发中经常会碰到区分同一对象的问题,一个完整的类最好覆写Object类的hashCode()、equals()、toString()三个方法。

6、集合的输出

——4种常见的输出方式

——Iterator: 迭代输出,使用最多的输出方式

——ListIterator: Iterator的子接口,专门用于输出List中的内容

——Enumeration

——foreach

在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生ConcurrentModificationException异常。

所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的, 只能对元素进行判断,取出,删除的操作, 如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。

该接口只能通过List集合的listIterator方法获取。

7、Map接口

*Correction、Set、List接口都属于单值的操作,而Map中的每个元素都使用key——>value的形式存储在集合中。

Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。 1,添加。 put(K key, V value) putAll(Map<? extends K,? extends V> m)

2,删除。 clear() remove(Object key)

3,判断。 containsValue(Object value) containsKey(Object key) isEmpty()

4,获取。 get(Object key) size() values()

entrySet() keySet()

8、Map接口的常用子类

Map |HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。 |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

9、集合工具类

Collections:集合框架的工具类。里面定义的都是静态方法。

Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。 它有两个常用的子接口, List:对元素都有定义索引。有序的。可以重复元素。 Set:不可以重复元素。无序。

Collections是集合框架中的一个工具类。该类中的方法都是静态的 提供的方法中有可以对list集合进行排序,二分查找等方法。 通常常用的集合都是线程不安全的。因为要提高效率。 如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉与深度学习基础

Leetcode 229. Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/...

21060
来自专栏java一日一条

JAVA集合类(大公司面试喜欢问的)

看了一些所谓大公司的Java面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧。

11520
来自专栏陈树义

6.Java集合总结系列:常见集合类的使用(List/Set/Map)

MARK 总结: Set、List 和 Map 可以看做集合的三大类。 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。...

36350
来自专栏郭耀华‘s Blog

Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法

Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 ArrayList 和Vector是采用...

41680
来自专栏吾爱乐享

java之学习集合的并发修改及案例

14530
来自专栏小二的折腾日记

day5(面向对象2)

8730
来自专栏Java学习123

Java中数组以及集合

30070
来自专栏向治洪

java基础之泛型

泛型 术语 "?"通配符 通配符的扩展 自定义泛型方法 "擦除"实例 类型参数的类型推断 自定义泛型类 泛型方法和泛型类的比较 泛型和反射 通过反射获...

32060
来自专栏lulianqi

ArrayList List<T> T[] Array

不保证会对 ArrayList 排序。 在执行需要对 ArrayList 排序的操作(如 BinarySearch)之前,必须对 ArrayList 进行排序。

8610
来自专栏desperate633

LintCode 最长上升子序列题目分析

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的...

7320

扫码关注云+社区

领取腾讯云代金券