集合

Collection 接口

|-List 接口

|-LinkedList 类

|-ArrayList 类

|-Set 接口

|-HashSet 类

|-TreeSet 类

|-LinkedHashSet 类

------------------------------------

Map 接口

|-HashMap 类

|-TreeMap 类

|-LinkedHashMap 类

一、Collection 和Collections的区别?

Collection: 是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set和List。
Collections: 是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

二、ArrayList 和 Vector,LinkedList 的区别。

ArrayList和Vector都是使用数组方式存储数据,它们都允许直接按序号索引元素,索引数据快;但是插入元素要涉及数组元素移动等内存操作,插入数据慢。

同步性:Vector 是线程安全的,也就是说是它的方法之间是线程同步的;而 ArrayList 是线程序不安全的,它的方法之间是线程不同步的。

数据增长:ArrayList 与 Vector 都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加 ArrayList 与 Vector 的存储空间,Vector 增加原来的一倍,ArrayList 增加原来的0.5倍。

LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

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

三、HashMap和Hashtable的区别?

历史原因: Hashtable 是基于陈旧的 Dictionary 类的;    HashMap 是 Java 1.2 引进的 Map 接口的一个实现

同步性:    Hashtable 是线程安全的,也就是说是同步的;HashMap 是线程序不安全的,不是同步的

值:HashMap 允许将 null 作为一个 entry 的 key 或者 value,而Hashtable不允许。HashMap 把 Hashtable 的 contains 方法去掉了,改成contains value和contains Key。

四、List 和 Map区别?

List 是存储单列数据的集合,List 中存储的数据是有顺序,并且允许重复。

Map 是存储键和值这样的双列数据的集合,Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

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

Comparable 和 Comparator 接口。

六、Set 里的元素是用什么方法来区分重复与否呢?是用 == 还是 equals() ?它们有何区别?

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

equals() 和 == 方法决定引用值是否指向同一对象

equals() 在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

七、去掉一个 Vector 集合中重复的元素。

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

-------------------------------------------------------------------------------------------

String

一、String s = new String("xyz"); 创建了几个 String Object?

首先在string常量池内找”xyz”对象,找到的话就不在常量池里创建string对象,否则创建。
遇到new运算符号了,在堆里创建string对象并被s引用到。

二、String、StringBuffer 和 StringBuilder 三者的区别。

都可以储存和操作字符串。

String 类提供了数值不可改变的字符串。

StringBuffer 类提供的字符串进行修改。

另外,String实现了equals方法,new String(“abc”).equals(newString(“abc”) 的结果为true,

而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(newStringBuffer(“abc”)的结果为false。

String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,
所以,将StringBuffer对象存储进 Java 集合类中时会出现问题。

操作时的执行速度: 由于 StringBuffer 和 StringBuilder 是字符串变量,String 是字符串常量,所以 StringBuilder > StringBuffer > String

操作少量的数据用 = String

多线程操作字符串缓冲区 下操作大量数据 = StringBuffer (线程安全)

单线程操作字符串缓冲区 下操作大量数据 = StringBuilder (非线程安全)

集合和String的更多相关文章

  1. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  2. 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq

    5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...

  3. Java集合的实现细节—Set集合和Map集合

    Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...

  4. java基础33 Set集合下的HashSet集合和TreeSet集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  5. python集合和eval的使用

    python集合和eval的使用 创建集合 使用工厂方法 set()和 frozenset(): >>> s = set('cheeseshop') >>> s s ...

  6. 集合和Iterator迭代器

    集合 集合是java中提供的一种容器,可以用来存储多个数据. 注意: ①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中, 其实它是自动转换成 Integer 类后存入的,Java中每一 ...

  7. 【读书笔记】【深入理解ES6】#7-Set集合和Map集合

    ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...

  8. List集合和iterator并发异常处理

    一:List接口: 子类:ArrayList   LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...

  9. C#规范整理·集合和Linq

    LINQ(Language Integrated Query,语言集成查询)提供了类似于SQL的语法,能对集合进行遍历.筛选和投影.一旦掌握了LINQ,你就会发现在开发中再也离不开它.   开始! 前 ...

随机推荐

  1. 取消IE默认下载工具为迅雷

    需求:企业访问内部WEB系统下载文件时,IE默认下载工具设置为迅雷,则弹出迅雷下载框.现需要直接弹出IE下载保存框. 方案:打开迅雷,进行撤销默认下载工具. 1.迅雷5: 1.1. 打开迅雷下载工具 ...

  2. CSS笔记之伪类与伪元素

    伪类分为两种:UI伪类 与 结构化伪类 UI伪类:a:link{}    a:hover{}   a:active{}  a:visited{} input[type='text']:focus{} ...

  3. golang官网可以打开了 go语言

    golang.org之前国内一直打不开,今天看了一下居然可以打开了,除了页面上youtube的视频加载不了.页面自动识别中文. 再也不用为下载go的源码发愁了.http://www.cnblogs.c ...

  4. mfc学习之路--如何删除通过控件新增的变量

    刚刚学校mfc的人都会遇到这样一个问题(比如我),在照做书做一个mfc程序,给控件新增变量时变量类型错了,但是变量名对了,然后想要加个正确的时候提示"已经存在该对象",然后就傻了, ...

  5. SharePoint 2013 工作流之使用Designer配置示例篇

    在SharePoint 2013中,支持SharePoint Designer 2013(以下简称SPD)配置简单的工作流,完成我们的业务需要.下面,我们就举一个小例子,实现SPD配置工作流. 1. ...

  6. 基本动画CABasicAnimation - 完成之后闪回初始状态

    基本动画CABasicAnimation 结束之后,默认闪回初始状态,那怎么解决呢? position需要设备两个属性: // MARK: - 结束后不要闪回去 anim.removedOnCompl ...

  7. iOS Swift-简单值(The Swift Programming Language)

    iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...

  8. 关于watir-webdriver中文乱码问题

    require 'watir-webdriver' require 'iconv' cov = Iconv.new( 'gbk', 'utf-8') b = Watir::Browser.new b. ...

  9. ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper的解决办法

    如下图: 如果出现了这样的错误,最大的可能是:你没有在 WEB-INF/lib 目录下放入相关的jar包(jackson-core/annotations/databind.jar) 如果你在WEB- ...

  10. SQL Server 2008 R2——CROSS APPLY 根据数据出现的次数和时间来给新字段赋值

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...