常用类的对比

来源:互联网 发布:淘宝网红直播推广费用 编辑:程序博客网 时间:2024/06/05 19:52

对于开发人员来说,有很多常用的集合或者类,他们之间可以实现相同的功能,然而却在效率上都有一些细微的差别,今天我们就来总结几条经常用的集合类的不同之处:
一、String、StringBuffer和StringBuilder之间的区别
1.String String类是不可变类,任何对String的改变都会引发新的String对象的生成,当我们用String来操作字符串的时候,一旦我们字符串的值改变,就会在内存创建多一个空间来保存新的字符串,效率极低。
2.StringBuffer StringBuffer类是可变类,任何对它所指代的字符串的改变都不会产生新的对象,但StringBuffer是线程安全的,它支持并发操作,适合使用在多线程当中。
3. StringBuilder StringBuilder类是线程不安全的,但是它在单线程当中的执行效率比StringBuffer要高很多,在使用方法上2和3基本上是一样的。

参考地址:http://blog.csdn.net/mad1989/article/details/26389541
http://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html
http://www.cnblogs.com/sevenlin/p/sevenlin_StringBuffer_StringBuilder20150806.html

二、List、Set和Map之间的关系
1.List和Set接口继承于Collection接口,Map是与Collection并列的接口概念。
2.List和Set都是Collection下的子接口,他们的区别在于,List存储的是有序的,可重复的数据,而Set储存的是无序的,不可重复的数据。
3.定义用来保存键-值对特点的数据,要求键不能重复。

三、Collection和Collections的区别
1.Collection java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
2.Collections java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

public class TestCollections {    public static void main(String args[]) {      //注意List是实现Collection接口的      List list = new ArrayList();      double array[] = { 112, 111, 23, 456, 231 };      for (int i = 0; i < array.length; i++) {          list.add(new Double(array[i]));      }      Collections.sort(list);      for (int i = 0; i < array.length; i++) {          System.out.println(list.get(i));      }      // 结果:23.0 111.0 112.0 231.0 456.0  } }  参考:http://pengcqu.iteye.com/blog/492196

四、Vector、ArrayList和LinkedList的区别
1.Vector:①是List的古老实现类
②线程不安全,效率低
③底层使用Object[]存储
2.ArrayList:①是List的主要实现类
②线程安全,效率高
③底层使用Object[]存储
3.LinkedList:底层使用双向链表存储,对于频繁的插入、删除操作,使用此类的效率高。

五、HashMap和HashTable的区别
1.HashMap:①作为Map的主要实现类
②线程不安全的
③可以存储null的key和value

2.HashTable :①作为Map的古老实现类
②线程安全的
③不可以存储null的key和value

原创粉丝点击