集合和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,你就会发现在开发中再也离不开它. 开始! 前 ...
随机推荐
- css制作漂亮彩带导航条菜单
点击这里查看效果:http://keleyi.com/keleyi/phtml/divcss/17.htm 效果图: 以下是源代码: <!DOCTYPE html PUBLIC "-/ ...
- 使用hexo搭建属于自己的博客
如果你喜欢拥有自己的博客域名,如果你喜欢折腾,可以先点击luckykun.com,看看效果,再选择要不要进来看看--- 之前一直都在博客园写博客,不过最近在逛园子的时候不小心看到了hexo,简直有种相 ...
- 如何使用CSS绘制一个响应式的矩形
背景: 最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案. 有如下几种方案: 使用js来设置元素的高度 使用vw单位 div {width: 50vw; height: 50 ...
- SharePoint 2013 图文开发系列之创建内容类型
SharePoint内容类型,是很有特色的,就好比发布新闻,同在一张列表里,可以由内容类型区分图片新闻.文字新闻等,顾名思义,就是在一张列表里发布不同类型的项目. 1.添加新项目,选择SharePoi ...
- Emacs学习心得之 LaTeX编辑
目录 1. 前言 2. texlive的安装 3. AUCTEX的安装和配置 4. RefTEX的安装和配置 一.前言 本篇博文记录了Emacs下LaTeX编辑环境的搭建,参考一下文章: http:/ ...
- XIB 上的控件不显示怎么办
原文:http://www.cnblogs.com/sandyzhang/p/5660061.html 午休时间遇到有人求助:说是XIB 上内容都有的,但是看不到,demo 运行的话控件都存在的. ...
- 从tabBarController的一个item上的控制器跳转到另一个item上的控制器
先从习惯性的tabBarController开始,很多应用的外框都是用这个开始的,而从tabBarController的一个item上的控制器跳转到另一个上的,往往都是直接通过点击tabBar上的不同 ...
- 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题
最近有一网站使用Sqlite数据库作为数据临时性的缓存,对多片区进行划分 Sqlite数据库文件,每天大概新增近1万的数据量,起初效率有明显的提高,但历经一个多月后数据库文件从几K也上升到了近160M ...
- ORA-00600: internal error code, arguments: [LibraryCacheNotEmptyOnClose]
案例环境: 操作系统版本: Red Hat Enterprise Linux ES release 4 数据库版本 : 10.2.0.4.0 32 bit 案例介绍: 今天我执行stop_ora ...
- Redhat Linux安装JDK 1.7
本篇主要介绍在Redhat Linux(Red Hat Enterprise Linux Server release 5.7 (Tikanga))系统上安装JDK 1.7,其它Linux平台安装也大 ...