集合

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. zookeeper集群

    0,Zookeeper基本原理 ZooKeeper集群由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点,其他节点都为Follower.当客户端Client连接到Zo ...

  2. Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...

  3. 浅谈RecyclerView(完美替代ListView,GridView)

    Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下Recycl ...

  4. 【Swift 2.0】实现简单弹幕功能

    前言 简单实现弹幕功能,表跟我谈效率,但也有用队列控制同时弹的数量. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over ...

  5. String类型传值以及对象传值

    package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void mai ...

  6. (二)Maven的安装与环境配置

    想要安装 Apache Maven在Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量. 所需工具 : 1.JDK 2.Ma ...

  7. SqlServer数据类型

    Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. n varchar(n) 可变长度的字符串.最多 8,000 个字符.   varch ...

  8. SQL Server 2008 R2的发布订阅配置实践

    纸上得来终觉浅,绝知此事要躬行.搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅.镜像.日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么 ...

  9. PowerShell中的基础数据类型

    PowerShell是一个面向对象的语言,在申明变量的时候不强制要求申明数据类型,使用$开头来申明变量即可. 基本数据类型 PowerShell本身是基于.Net开发出来的,所以在.Net中的基本数据 ...

  10. PHP中require和include路径问题总结

    1 绝对路径.相对路径和未确定路径 相对路径 相对路径指以.开头的路径,例如 ./a/a.php (相对当前目录) ../common.inc.php (相对上级目录), 绝对路径 绝对路径是以 / ...