芯灵思SinlinxA33开发板安卓开发-java语言基础(9)

java中的集合类: 

Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:

[if !supportLists]· [endif]Collection:代表一组对象,每一个对象都是它的子元素。

[if !supportLists]· [endif]Set:不包含重复元素的Collection。

[if !supportLists]· [endif]List:有顺序的collection,并且可以包含重复元素。

[if !supportLists]· [endif]Map:可以把键(key)映射到值(value)的对象,键不能重复。

.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

下面列出了Array和ArrayList的不同点:

[if !supportLists]· [endif]Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。

[if !supportLists]· [endif]Array大小是固定的,ArrayList的大小是动态变化的。

[if !supportLists]· [endif]ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

[if !supportLists]· [endif]对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

ArrayList和LinkedList有什么区别?

ArrayList和LinkedList都实现了List接口,他们有以下的不同点:

[if !supportLists]· [endif]

ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

HashSet和TreeSet有什么区别?

[if !supportLists]· [endif]

[if !supportLists]· [endif]

[if !supportLists]· [endif]

HashSet是由一个hash表来实现的,因此,它的元素是无序的。add(),remove(),contains()方法的时间复杂度是O(1)。

[if !supportLists]· [endif]

另一方面,TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。因此,add(),remove(),contains()方法的时间复杂度是O(logn)。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

Comparable和Comparator接口是干什么的?列出它们的区别。

Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,859评论 1 45
  • Java基础面试 Java基础面试... 1 1. Java基础知识... 5 1.1. Java源程序的扩展名是...
    来着何人阅读 1,213评论 0 1
  • 文章图片上传不正常,如需文档,可联系微信:1017429387 目录 1 安装... 4 1.1 配置探针... ...
    Mrhappy_a7eb阅读 6,574评论 0 5
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,966评论 0 38
  • 星期天我在小区散步,发现小区门外停着一辆很熟悉的红色吉普车,这不是老张的车吗?难道她从美国回来啦!我随即给她发了微...
    双子朗读啦阅读 513评论 0 5