Java集合框架---重构设计
面向接口编程:
接口类型 变量 =new 实现类();
List list=new ArrayList();
---------------------------------------
List实现类的特点与性能分析
--------------------------------------
三者共同的特点和遵循的规范:
1):允许元素重复;
2):记录元素的先后添加顺序
--------------------------------------
Vector类:
底层才有数组结构算法,方法都是使用Synchronized修饰,线程安全,但是相当于ArrayList性能较低;
ArrayList类:
底层才有数组结构算法,方法没有使用Synchronized修饰,线程不安全,相当于Vector性能较高。
ArrayLis现在基本上已经取代了Vector的江湖地位。
为了保证ArrayList线程安全,List lsit =Collections.SynchronizedList(new Arraylist(...));
LinkedList类:
底层才有双链表结构算法,方法没有使用Synchronized修饰,线程不安全。
数组结构算法和双向链表结构算法的性能问题:
数组结构算法:插入和删除操作速度低,查询和更改较高;
链表结构算法:插入和删除操作速度快,查询和更改较慢;
---------------------------------------------------------------------------
使用的选择:
Vector类打死都不用!即使要用,就用ArrayList类。
如果插入和删除操作频繁,应该使用LinkedList类;
如果查询和更改操作频繁,应该使用ArrayList类;
在开发中。较多使用ArrayList类,根据具体的需求环境来选择;

public static void main(String[] args) {
List list=new ArrayList();
list.add("b");
list.add("c");
list.add("d");
list.add("e");
//方式1:for循环
for (int index = 0; index < list.size(); index++) {
Object rest = list.get(index);//取出指定索引位置的元素
System.out.println(rest);
}
System.out.println("---------------------------------------------------------------------------");
//方式2:for-each增强for循环
for (Object ele : list) {
System.out.println(ele);
}
System.out.println("---------------------------------------------------------------------------");
//方式3:使用while循环操作迭代器Iterator
Iterator it=list.iterator() ;
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("---------------------------------------------------------------------------");
//方式4:使用for循环操作迭代器Iterator
for (Iterator it2=list.iterator() ;it2.hasNext(); ) {
System.out.println(it2.next());
}
System.out.println(list);
}
Java集合框架---重构设计的更多相关文章
- Java集合框架入门介绍(一)
Java工具包(java.util)提供了强大的数据结构,主要有以下几种接口或类 枚举Enumeration 接口 从数据集合中取回一系列连续值的方法 位集合 BitSet 可以单独清楚或设置的位和标 ...
- Java 集合框架(常用数据结构)
早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...
- Java集合框架(常用类) JCF
Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...
- Java集合框架面试题
www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...
- 《深入理解Java集合框架》系列文章
Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framewo ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- Java集合框架Collection
转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...
- Lambda表达式和Java集合框架
本文github地址 前言 我们先从最熟悉的Java集合框架(Java Collections Framework, JCF)开始说起. 为引入Lambda表达式,Java8新增了java.util. ...
随机推荐
- RelativeLayout里的gravity不能居中的解决方法
最近在遇到RelativeLayout里的gravity属性给它复制center_horizontal或者center都不能居中它的子组件,后来找到了替代方法,只要在它的每个子组件里加上android ...
- float和clear
简介 float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它.该元素从网页的正常流动中移除,尽管仍然保持部分的流动性. 浮动元素是float值不为none的元素. 可能 ...
- maven打war包后无法依赖本地工程的jar包,造成debug时跳到class文件而不是本地java文件
问题现象:项目结构如下 growup-service | - - - - - -growup-api | - - - - - -growup-core | - - - - - -growup-war ...
- spring mvc静态资源访问的配置
如果我们使用spring mvc来做web访问请求的控制转发,那么默认所有访问都将被DispatcherServlet独裁统治.比如我现在想访问的欢迎页index.html根本无需任何业务逻辑处理,仅 ...
- win7系统清除USBSTOR记录
方法一 1.Win+R,出现运行窗口,如图所示: 2.在输入框中输入“regedit”,如图所示: 3.进入后,点击编辑-查找,查找输入框中输入“USBSTOR”(为了加快查找速度,可以只选择“项”) ...
- java求1+1/2+1/3+1/4+......+1/n的值
总结:与上一篇的不同是在main函数里.所以n的值是需要填写的.而不是未知值还是运用不灵活. package com.c2; //1+1/2+1/3+....+1/n的值 public class D ...
- Vue.js:表单
ylbtech-Vue.js:表单 1.返回顶部 1. Vue.js 表单 这节我们为大家介绍 Vue.js 表单上的应用. 你可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-mo ...
- leetcode783
对BST树进行中序遍历,得到递增序列,然后依次计算相邻两元素之间的差,并保存最小的差. class Solution { public: vector<TreeNode*> V; void ...
- leetcode592
public class Solution { private int GCD(int a, int b) { ? GCD(b, a % b) : a; } private int LCM(int a ...
- c++builder PM2.5
c++builder PM2.5 TMemoryStream *ms = new TMemoryStream(); this->NetHTTPClient1->Get("http ...