集合和String
集合

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的更多相关文章
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编 ...
- Java集合的实现细节—Set集合和Map集合
Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...
- java基础33 Set集合下的HashSet集合和TreeSet集合
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
- python集合和eval的使用
python集合和eval的使用 创建集合 使用工厂方法 set()和 frozenset(): >>> s = set('cheeseshop') >>> s s ...
- 集合和Iterator迭代器
集合 集合是java中提供的一种容器,可以用来存储多个数据. 注意: ①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中, 其实它是自动转换成 Integer 类后存入的,Java中每一 ...
- 【读书笔记】【深入理解ES6】#7-Set集合和Map集合
ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...
- List集合和iterator并发异常处理
一:List接口: 子类:ArrayList LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...
- C#规范整理·集合和Linq
LINQ(Language Integrated Query,语言集成查询)提供了类似于SQL的语法,能对集合进行遍历.筛选和投影.一旦掌握了LINQ,你就会发现在开发中再也离不开它. 开始! 前 ...
随机推荐
- 使用HBaseShellPro操作Hadoop 2系列发行版CDH4.4
前言 对于hadoop,hbase由于项目紧张原因好几个月没有时间认真的来总结下了,最近有一些空,就来继续的把项目中用到的一些技术实际的写出来,动动手,好久没有写东西了,都生疏了,说起hadoop,公 ...
- js基础知识梳理(最简版)
基础的JavaScript知识,只放XMind截图.小白 JS01 JS02 JS03 最基础的js知识--!
- JavaScript中this指向的简单理解
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- IOS开发之----#import、#include和@class的区别
1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题.&l ...
- Android屏幕适配总结
一.首先需要明白的几个概念 1.屏幕尺寸:也就是我们平常所说的某某手机几寸屏.比如苹果的4.7寸, 荣耀6的5.5寸.这里说的寸是英寸(1 英寸 = 2.54 厘米). 计算方法:屏幕尺寸=对角先尺寸 ...
- Lucene搜索方式大合集
package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...
- 基于Ruby的watir-webdriver自动化测试方案与实施(四)
接着基于Ruby的watir-webdriver自动化测试方案与实施(三) http://www.cnblogs.com/Javame/p/4159468.html 继续 ... ... 首先回忆 ...
- [LoadRunner]LR11安装或破解时报错的解决方法
背景:在性能测试项目上,需要安装到LR11进行性能测试,而在安装时会出现安装运行环境失败,安装文件缺失等问题.现总结了上述问题,并给出以下解决方法: 问题1:安装LoadRunner时出现“计算机缺少 ...
- ORACLE 10g 数据库体系结构图
ORACLE 10g 的数据库体系结构图(ORACLE 10g(Release 2)ARCHITECTURE),非常的全面.系统.高屋建瓴的整体介绍了ORACLE 10g 的数据库体系结构.如果能全面 ...
- ORACLE的SQL JOIN方式小结
在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a query that combines row ...