java 集合(一)
发布日期:2021-06-24 06:58:40 浏览次数:4 分类:技术文章

本文共 2694 字,大约阅读时间需要 8 分钟。

1.collection框架结构:

集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等.

集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等.

集合框架类似编程中经常用到的工具类,使得编码更专注于业务层的实现,不需要从底层实现相关细节—“数据结构的封装”和”典型算法的实现”.(有待于修改)

2.collection框架中实现比较要实现什么借口:

comparable/comparator(需要重点看一下)

3.ArrayList和Vector的区别:

相同点:

    1.ArrayList和Vector都实现了List接口,List借口继承Collection接口。

    2.他们都是有序集合,即存储在这两个集合中的元素都是有顺序的,相当于一种动态数组,可通过索引号取出某个元素。并且集合中元素可以重复。

不同点:

    同步性:Vector是线程安全的,即他的方法之间是线程同步的,ArrayList是线程不安全的,即他的方法之间是线程不同步的。如果是一个线程会访问到集合使用ArrayList,因为它不考虑线程安全,效率高。如果是多个线程会访问到集合,使用Vector因为它不会考虑和编写程序安全代码。

    数据增长:Vector增长原来的一倍,ArrayList增长原来的0.5倍。

4.hashMap和hashTable的区别:

    1.历史原因:HashTable基于陈旧的dictionary类的,HashMap是java 1.2引进的Map接口的一个实现。

    2.同步性:HashTable是线程安全的,也就是说是同步的,而HashMap是线程不安全的,也就是说是不同步的。

    3.值:HashMap允许将空值作为一个表的条目的key和value。

5.List和Map的区别:

    一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List存储的数据是有顺序的,并且可以重复。May存储的数据是无序的,键不可以重复,值可以重复。

6.List,Set,Map是否继承collection接口:

    List,Set继承Collection接口,Map不是。

7.List,Set,Map的区别:

    List,Set是单列集合,都继承Collection接口。Set不允许有重复元素,只能用iterator接口取得所有元素,在逐一遍历。List允许重复,且是有序集合,除了使用iterator接口取得所有元素,逐一遍历外,还可以通过索引号来获取指定索引号的集合。

    Map是双列集合,可一键多指,无顺序。

8.说出ArrayList,Vector,LinkedList存储的性能和特性:

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便新增和插入元素,他们都允许直接按序号索引元素,但插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了线程安全通常性能比ArrayList差。而linkedList使用双向链表实现存储,按需要索引数据要进行前向或后向遍历,但是插入数据是只需要记录本项的前后向即可,所以插入速度较快。

    linkedList也是线程不安全的,linkedList提供了一些方法,使得LinkedList可以被当做堆栈和队列来使用。

9.去掉一个Vector集合中重复的元素:

Vector newVector = new Vector();

For (int i=0;i<vector.size();i++)
{
Object obj = vector.get(i);
if(!newVector.contains(obj);
newVector.add(obj);
}

10.collection和collections的区别:

collection是集合类的上级接口,继承于它的接口有Set和List。

collections是针对集合类的帮助类,它提供了一系列的静态方法实现对各种集合的搜索,排序,线程安全化操作。

11.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?使用==还是用equals()?他们有何区别?

Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。

equals()和==方法决定引用值是否指向同一对象,equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相匹配的时候,返回真值。

12.你所知道的集合类有哪些?主要方法?

最常用的集合类有List和Map。List具体实现包括ArrayList和Vector,他们是可变大小的列表,比较适合构建,存储和操作任意类型对象的元素列表。List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(键,值),其中每一个键映射到一个值。

对于Set,有add,remove,contains;对于Map,有put,remove,contains;List有get(int index)这样的方法,因为它可以按顺序取元素,而set中没有get(int index)方法;List和set都可以迭代出所有元素,迭代时先要得到一个iterator对象,所以List和Set都有一个iterator方法用于返回Iterator对象;map可以返回三个集合,一个是返回所有Key的集合,一个是返回所有Value的集合,在一个是返回Key和Value组成的EntrySet对象的集合,May也有get方法,参数是Key,返回值是Key对应的Value。   

13.两个对象相同(x.equals(y)==true),但却可能有不同的hashCode,这句话对不对?

对,如果对象要保存在HashMap或HashSet中,他们的equals相等,那么他们的hashCode也一定相等。如果不保存在HashSet或HashMap中,于hashcode无关。

14.TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的 compareTo  方法,还是使用的子类的 compareTo 方法,还是抛异常:

 

转载于:https://www.cnblogs.com/hxg-yw/p/4020235.html

转载地址:https://blog.csdn.net/weixin_30896763/article/details/98767591 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:最详细的Axure动态面板使用教程
下一篇:SVN使用教程2017.10.6

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月20日 04时27分54秒