java集合类的学习(二)
- ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制。他们代码类似。
- ArrayList代表大小可变的数组,允许对元素进行快速随机访问,但向List中间进行添加移除元素操作时效率很差,LinkedList采用了链表数据结构,对顺序访问进行了优化,提高了向List中间位置进行操作的效率。
- Vector的作用跟ArrayList差不多,只是区别于一个实现了同步机制,一个没有。如果保存大量的数据用他。
- HashMap是Map的一个实现类,采用了哈希算法来存取Key对象,具有很好的存取性能。并且允许将null作为Map的Key或Value,HashMap也是没有实现同步机制的。
- hashMap和hashTable代码类似如下:
package 集合类练习; import java.util.Hashtable;
import java.util.Iterator; public class HashTableDemo { /**
* 时间:2014年4月22日17:17:56
* 目的:HashTable的应用
*/
public static void main(String[] args) {
//创建一个hashtable的对象
Hashtable ht = new Hashtable(); Emp emp1 = new Emp("01", "陈奕迅", 20.3f);
Emp emp2 = new Emp("02", "俞敏洪",1200f ); ht.put("01", emp1);
ht.put("02", emp2);
// ht.put(null, null);不能在hashtable中用null,在hashmap中可以。 //查找,查找编号为02的员工
if(ht.contains("02"))
{
System.out.println("可以找到该员工"); Emp emp = (Emp)ht.get("02");
System.out.println("名字是:"+emp.getName());
}else {
System.out.println("没有找到该员工");
} //遍历HashMap中所有的Key和Value
Iterator iterator = ht.keySet().iterator();//这一句话不能漏
while(iterator.hasNext())
{
//取出key
String keyString = iterator.next().toString(); Emp emp = (Emp)ht.get(keyString);
System.out.println("编号"+emp.getEmpNo());
System.out.println("名字"+emp.getName());
System.out.println("薪水"+emp.getSal());
} } }- Hashtable与hashMap的区别:1.hashtable是基于陈旧的Dictionary的,hashMap是java1.2引进的map接口的一个实现。2.hashTable是同步的,保证了hashtable中的对象是线程安全的,不过相对速度慢。3.hashMap可以让你将空值作为一个条目的key或value,但是Hashtable是不能放空值的。
- 集合类完,总结:1.如果要求线程安全可以使用Vector,hashtable。2.不要求同步使用Arraylist,LinkedList,hashMap.3.如果要求键值对,用HashMap和Hashtable。4.如果数据量很大,又要线程安全考虑vector。
java集合类的学习(二)的更多相关文章
- java集合类的学习(一)
为何要用集合类:可以储存不同类型的数据,可以进行动态的删除和修改,不用考虑数组越界的问题. 软件开发常用的集合类:Vector,ArrayList,Stack,HashMap,Hashtable. 3 ...
- JAVA多线程基础学习二:synchronized
本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...
- java集合类的学习总结一
概况总结 首先,区分最顶层接口的区别:Collection和Map的区别:前者是单个元素:后者存储的是一对元素.Collection有List和Set两个子接口,两个子接口下分别有Vector和Arr ...
- Java编程思想学习(二) 操作符
1. 对象“赋值”:对一个对象进行操作时,我们真正操作的是对对象的引用.所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方.(引用于对象之间存在关联,但这种关联可以被改 ...
- Java编程思想学习(二)----一切都是对象
2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...
- Java集合类总结 (二)
LinkedList类 由于基于数组的链表有一个大的缺点,那就是从链表中间移除一个元素时需要将此元素后面的所有元素向前移动,会产生大量的开销,同样的在链表中间插入一个新元素也会有大量开销.如下图: L ...
- java集合类(五)About Map
接上篇“java集合类(四)About Set” 这次学完Map之后,就剩队列的知识,之后有关java集合类的学习就将告一段落,之后可能会有java连接数据库,I/O,多线程,网络编程或Android ...
- java集合类(二)List学习
接上篇 java集合类(一) List接口继承了Collection接口和Iterable接口,即同样含有Collection和 Iterable的特性,还有方法,其基本方法有: 1)有关添加: b ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十二周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十二周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
随机推荐
- .NET 框架程序使用 Win32 API
.NET 框架程序可以通过静态 DLL 入口点的方式来访问本机代码库.DllImport 属性用于指定包含外部方法的实现的dll 位置. DllImport 属性定义如下: na ...
- mata属性
声明文档使用的字符编码: <meta charset="utf-8" />声明文档的兼容模式: <meta http-equiv=" ...
- SAP验证
需求:财务录费用凭证,检查科目6601001-6601999 & 成本中心为1000R001 - 1000R999,工单不能为空 GGB0 1.选择财务凭证->行项目->新建确认' ...
- This TableLayout layout or its LinearLayout parent is possibly useless
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- mpu
#include "mpu.h" #include "mem.h" #include "my_errno.h" #include " ...
- Leetcode 详解(Valid Number)
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- asp.net网站运行出错:the underlying provider failed on open的解决
在登录系统,通过linq查询时发生错误,the underlying provider failed on open,如何解决,请看: Step 1:Open Internet Information ...
- 使用VisualVM进行性能分析及调优(转)
VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- .NET程序的简单编译原理
1.不管是什么程序,最终的执行官是CPU,而CPU只认识1和0的机器码. 2.我们现在写的一般是高级语言写的程序.CPU是不认识我们用高级语言写的源代码的,那应该怎么办才能让CPU执行我们写好的程序尼 ...
- php的clone 浅拷贝
总所周知 php 的 clone方法 拷贝一个对象 而且还是所谓的浅拷贝 一时迷茫 今天终于整明白了 <?php class a { pulic $data; function __constr ...