`
wx1569484809
  • 浏览: 63855 次
文章分类
社区版块
存档分类
最新评论

集合框架基础知识总结

 
阅读更多

1、为什么使用集合框架

当我们并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架

2、Java集合框架包含的内容

接口:(父类)Collection接口下包含List(子类 )接口和Set(子类)接口 L

ist接口下又包含(ArrayList集合实现类和LinkedList集合实现类

) Set接口下又包含(HashSet集合实现类和TreeSet集合实现类)

接口:(父类)Map接口下包含(HashMap集合实现类和TreeMap 集合实现类)

*Collections接口提供了对集合进行排序、 遍历等多种算法实现 *Java集合框架为我们提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

Collection 接口存储一组不唯一无序的对象

List 接口存储一组不唯一有序(插入顺序)的对象

Set 接口存储一组唯一无序的对象 Map接口存储一组键值对象,提供key到value的映射

ArrayList集合和LinkedList集合的优点

1、ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高

2、LinkedList采用链表存储方式。插入、删除元素时效率比较高

List接口提供相应方法remove()、contains(),直接使用即可

ist接口常用方法 :   

    boolean add(Object o)         在列表的末尾顺序添加元素,起始索引位置从0开始

void add(int index,Object o) 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间

int size()                 返回列表中的元素个数

Object get(int index)         返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

boolean contains(Object o) 判断列表中是否存在指定元素

boolean remove(Object o) 从列表中删除元素

Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始

LinkedList的特殊方法

void addFirst(Object o) 在列表的首部添加元素

void addLast(Object o) 在列表的末尾添加元素

Object getFirst()         返回列表中的第一个元素

Object getLast()         返回列表中的最后一个元素

Object removeFirst()         删除并返回列表中的第一个元素

Object removeLast()         删除并返回列表中的最后一个元素

Map接口常用方法:

Object put(Object key, Object val) 以“键-值对”的方式进行存储

Object get (Object key) 根据键返回相关联的值,如果不存在指定的键,返回null

Object remove (Object key) 删除由指定的键映射的“键-值对”

int size() 返回元素个数

Set keySet () 返回键的集合

Collection values () 返回值的集合

boolean containsKey (Object key) 如果存在由指定的键映射的“键-值对”,返回true

Vector和ArrayList的异同:

实现原理相同,功能相同,很多情况下可以互用两者的主要区别如下

Vector线程安全,ArrayList重速度轻安全,线程非安全长度需增长时,Vector默认增长一倍,ArrayList增长50%

Hashtable和HashMap的异同:

实现原理相同,功能相同,在很多情况下可以互用

两者的主要区别如下

Hashtable继承Dictionary类,HashMap实现Map接口

Hashtable线程安全, HashMap线程非安全

Hashtable不允许null值,HashMap允许null值

迭代器Iterator

方法1:通过for循环和get()方法配合实现遍历

方法2:通过迭代器Iterator实现遍历 所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历 Collection 接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历

boolean hasNext(): 判断是否存在另一个可访问的元素

Object next(): 返回要访问的下一个元素

泛型集合: 把任何类型对象通过add(Object obj) 放入List中,认为只是Object类型 通过get(int index) 取出List中元素时必须进行强制类型转换,繁琐而且容易出现异常 使用Map的put(Object key, Object value)和get (Object key)存取对象时存在同样问题 使用Iterator的next()方法获取元素时存在同样问题

JDK5.0中通过引入泛型有效的解决了这个问题 JDK5.0使用泛型改写了集合框架中的所有接口和类

2、Collection框架中实现比较,要实现什么接口?

 答案:Comparable/Comparator

 3、ArrayList和Vector的区别?

 答案:这两个类都实现了List接口, 都是有序集合,即集合中的元素的位置是有顺序的,可以按位置索引号取出某个元素,并且其中的数据是允许重复的,相当于一种动态的数组。

ArrayList与Vector的区别,这主要包括两个方面:

 (1)同步性: Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。  

(2)数据增长: ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。

ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。

4、HashMap和Hashtable的区别?

 答案:HashMap是Hashtable的轻量级实现,都实现了Map接口。  主要区别在于HashMap允许空的键和值,而Hashtable不允许。 HashMap是非线程安全的,而HashTable是线程安全的。因此在只有一个线程访问的情况下,效率要高于Hashtable。 HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类,是Java1.2引进的Map接口的一个实现。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

5、List 和 Map 区别?

答案:一个是存储单列数据的集合,另一个是存储键值对的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

6、List, Set, Map是否实现Collection接口?

答案:List,Set是,Map不是。

7、List、Map、Set三个接口,存取元素时,各有什么特点?

 答案:List 以特定次序来持有元素,可有重复元素。

Set 无法拥有重复元素,内部排序。

Map 保存key-value值,key不能重复、value可重复。

8、两个对象值相同x.equals(y) == true,但却可有不同的hash code,这句话对不对?

答案:对。  如果对象要保存在HashSet或HashMap中,它们的equals相等,那么它们的hashCode值就必须相等。  如果不是要保存在HashSet或HashMap,则与hashCode没有什么关系了,这时候hashCode不等是可以的,例如ArrayList存储的对象就不用实现hashCode,当然,我们没有理由不实现,通常都会去实现的。

9、说出一些常用的类,包,接口,请各举5个?

 常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List ,HashMap

常用的包:java.lang java.io java.util java.sql ,javax.servlet,org.apache.strtuts.action,org.hibernate

常用的接口:Remote List Map Document NodeList ,Servlet,HttpServletRequest,HttpServletResponse,Transaction(Hibernate)、Session(Hibernate),HttpSession

转载于:https://my.oschina.net/u/3637221/blog/1504006

分享到:
评论

相关推荐

    day20(集合框架)教案.doc

    java集合框架的知识总结,内含代码讲解,知识点概括,带你更好理解java集合框架。。。。像Map集合的概念,遍历方式等

    集合框架List、Map、Set接口及其子类综合对比

    Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比

    JAVA泛型与集合框架PPT课件PPT学习教案.pptx

    JAVA泛型与集合框架知识点总结 JAVA泛型是JDK1.5中引入的一种机制,主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。泛型类的声明可以使用“class 名称<泛型列表>”语法,例如:class ...

    Java集合框架常见面试题.pdf

    根据提供的文档内容,文件是关于Java集合框架的面试题知识点总结。以下是Java集合框架的知识点详述: Java集合框架主要包括Collection接口和Map接口两大分支。Collection接口主要包括List、Set以及Queue三个子接口...

    Java_集合框架

    Java基础入门_集合部分_知识点汇总

    Java集合框架面试题

    下面是 Java 集合框架的知识点总结: 1. Java 集合类主要有两大分支:Collection 接口和 Map 接口。Collection 接口实现了 iterator 接口,用于遍历集合中元素的接口,主要有 hasNext()、next() 和 remove() 三个...

    集合框架 图

    根据给定文件的信息,我们可以提炼出关于Java集合框架的一些关键知识点。这些知识点主要涉及集合框架的基本概念、常用接口与类的介绍以及它们之间的关系。 ### 集合框架概述 在Java编程语言中,集合框架提供了一组...

    第03章.java集合框架.ppt

    Java 集合框架知识点总览 Java 集合框架是 Java 语言中提供的一种处理集合的机制,它提供了一种灵活、可靠、可扩展的方式来存储和操作对象的集合。在本章节中,我们将详细介绍 Java 集合框架的主要组成部分、使用...

    java集合框架总结

    本文将深入解析Java集合框架的关键知识点,涵盖其核心组件、接口以及常用类。 #### 一、Collection概述与特性 **1. Collection作为根接口** Collection接口是Java集合框架的核心,它定义了对集合对象进行基本操作...

    Java集合框架常见面试题夜间阅读版.pdf

    根据提供的信息,我们可以总结并详细解释关于Java集合框架的一些关键知识点。这些知识点主要涉及Java集合框架中的各种数据结构,如List、Set、Map等,并深入探讨了它们在实际应用中的特性与用途。 ### Java集合框架...

    集合框架总结

    本人总结的java高级集合框架知识点汇总,在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的“抉择” 。 :)(主要还是面试的...

    SSM框架知识点总结

    下面是对SSM框架及其主要组件的详细知识点总结。 **Spring框架** Spring是Java企业级应用的核心框架,它提供了一个容器来管理对象的生命周期和依赖关系。Spring的核心特性包括: 1. **依赖注入(Dependency ...

    Java类集集合框架

    ### Java类集集合框架知识点详解 #### 一、概述 Java类集集合框架是一个非常重要的概念,它提供了标准的数据结构来存储和管理对象。在Java中,类集框架主要包括四个核心接口:`List`、`Set`、`Map`以及`Iterator`...

    java基础知识点框架图

    "java基础知识点框架图"是一个非常有用的资源,尤其对于初学者来说,它可以帮助系统地理解和学习Java的基础概念。下面,我们将深入探讨这个框架图中可能包含的一些关键知识点。 1. **Java语法基础**: - **变量与...

    11.集合框架001-Collection接口13-16

    总结起来,本教程系列涵盖了Collection接口的基础知识,包括队列、双端队列、优先队列以及HashSet的具体使用。通过理论讲解和实例演示,学习者将能够深入理解Java集合框架的核心概念,并能熟练地在实际编程中运用...

    重难点之Java集合框架.pdf

    总结,Java集合框架提供了丰富的数据结构,如List、Set、Map等,通过接口和实现类的设计,使得开发者可以根据需求选择最适合的容器。理解并熟练运用集合框架,能极大地提高代码的可读性和性能。在具体应用中,要根据...

    数据结构和Java集合框架 英文版 第三版

    通过本篇内容的学习,我们不仅了解了数据结构的基础知识和Java集合框架的核心概念,还探讨了如何结合JDK源码来深入理解这些知识点。掌握好这些内容对于提高编程技能、优化代码质量和提升软件工程能力具有重要意义。...

    Java 相关的知识点总结

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和...以上就是Java相关的知识点总结,希望对你在学习和使用Java的过程中有所帮助。不断深入实践,理解和掌握这些知识点,将使你成为一名优秀的Java开发者。

    C++知识点总结(知识框架)

    下面是对C++各章知识点的详细概述,适合初学者进行学习和复习: 第一章:基础语法 这一章主要介绍C++的基本语法,包括变量定义、数据类型(如整型、浮点型、字符型等)、运算符(算术、关系、逻辑等)、流程控制...

    JavaScript语言基础知识点总结十张图

    本文将基于“JavaScript语言基础知识点总结十张图”这一主题,深入探讨JavaScript的基础概念、语法特性以及核心知识点。 1. **变量与数据类型** JavaScript有七种数据类型:Undefined、Null、Boolean、Number、...

Global site tag (gtag.js) - Google Analytics