集合和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,你就会发现在开发中再也离不开它. 开始! 前 ...
随机推荐
- [转]IPython Notebook简介1
原文:http://hyry.dip.jp/tech/slice/slice.html/35 Python Notebook简介1 作者 : RY 标签: cython ipython-note ...
- UILabel
//UILabel->UIView /* 1.实例化 2.属性 3.添加到父视图上 */ //实例化 UILabel *label = [[UILabel alloc] initWithFram ...
- java中文件的I/O操作
java中文件的读写操作 (一) (1)java中文件的字节转成字符读操作 FileInputStream fStream = new FileInputStream("test.txt&q ...
- ORACLE DELETE数据慢的案例
今天遇到一个有意思的案例,一开发同事告诉我他删除一个表的记录非常慢,已经快1个多小时了还没有完成.而且删除的记录只有1百多条.真是大跌眼镜的一件事情.最后发现该表与多个表有外键关联关系(这个表即是主表 ...
- ORA-10635: Invalid segment or tablespace type
上周星期天在迁移数据时,碰到了ORA-10635: Invalid segment or tablespace type 错误,当时的操作环境如下: 操作系统版本: [oracle@xxxxx scr ...
- Linux命令学习总结:shutdown
命令简介: 该命令可以安全关闭或者重新启动系统.你没有看错,shutdown命令不仅可以关闭系统.也可以重启Linux系统. 命令语法: /sbin/shutdown [-t sec] [-ark ...
- sp_configure错误:不支持对系统目录进行即席更新。
今天在一台数据库服务器上(Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Standard Edition (64-bit))使 ...
- 搭建自己的PHP框架心得(三)
h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...
- 遇到shell重定向的一个奇怪问题:'消失'的标准输入!
需求: 把找到的文件逐行输出,然后用rm在许可的情况下删除 前置准备: $ls rm.sh test1 test2 test3 test4 test5 test6 $cat rm.sh #! / ...
- 自动创建WIN32下多级子目录的C++封装类
这是 WIN32 自动创建多级子目录的 C++ 封装类,用法简单. 封装没有采用类的静态函数方式,而是在构造函数里面直接完成工作.没什么具体的原因,只是当时做成这样了, ...