- 浏览: 184166 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
u010244357:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
Abird2Simba:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
javer 写道代码看着有点乱啊,怎么搞的 sorry,原来是 ...
如何在springMVC 中对REST服务使用mockmvc 做测试 -
javer:
代码看着有点乱啊,怎么搞的
如何在springMVC 中对REST服务使用mockmvc 做测试 -
u011643314:
你用了部分是自己的包,怎么跑呢,先生。
如何在springMVC 中对REST服务使用mockmvc 做测试
一、java 集合包最常用的的2个接口Collection /和Map
List接口
最常用的有ArrayList ,LinkedList, Vector,Stack
ArrayList 的实现如下:
可以看出它是通过数组来操作的,那么他的增删查都是通过数组方法的来实现:
删除要复杂点:
将index 后面的对象当成一个数组,移动到index位置,然后将最后的一个给null.
get 最简单直接按数组下标找。
总结:
ArrayList 是一个基于数组实现的非线性安全的不限制容量的容器。在增加的时候要扩容,删除的时候却不减少容量
LinkedList:这是一个很有意思的双向链表
初始化的时候首先要new 一个 内部的entry 对象 。这个 对象代表一个元素
增加元素的时候 首先要创建一个 newEntry 将newEntry 前一个元素的next指给自己,将自己的next 的元素的previous 指向自己。 通俗点说,有2个位置,新来的坐后面,对面的人说,我是你的下一个,对将要来的第3个人说,我是你的前一个。
删除元素的时候 就告诉你前面的说我走了,你的后面的将是我的后面的。告诉你的后面,你的前面的将是我的前面的。我自己的都为空,你们再也找不到我了。3人行变成2人行。
在LinkedList 里面 查找是意见比较麻烦的事情,因为没有直接的索引,得一个一个去询问,jdk里面给的方法是:如果index >size/2 从后面找,否则从前面找。一直找到为止
LinkedList 总结: 他是一个非线性安全的基于双向链表实现的容易。元素相互之间都非常熟悉。
Vector
Vector 其实跟ArrayList 的实现方式基本相同,但是他的方法前面都加了 synchronized.还有一点区别就是他的扩容策略跟ArrayList不一样。
Vector 总结: 他是一个线程安全的ArrayList 。
Stack
Stack 继承自Vector push 操作就是vector 的addElement peek 获得最后一个元素。pop 调用peek 同时删除最后一个元素。
List接口
最常用的有ArrayList ,LinkedList, Vector,Stack
ArrayList 的实现如下:
public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this(10); }
可以看出它是通过数组来操作的,那么他的增删查都是通过数组方法的来实现:
/** * Appends the specified element to the end of this list. * * @param e element to be appended to this list * @return <tt>true</tt> (as specified by {@link Collection#add}) */ public boolean add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
删除要复杂点:
public E remove(int index) { RangeCheck(index); modCount++; E oldValue = (E) elementData[index]; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // Let gc do its work return oldValue; }
将index 后面的对象当成一个数组,移动到index位置,然后将最后的一个给null.
get 最简单直接按数组下标找。
总结:
ArrayList 是一个基于数组实现的非线性安全的不限制容量的容器。在增加的时候要扩容,删除的时候却不减少容量
LinkedList:这是一个很有意思的双向链表
初始化的时候首先要new 一个 内部的entry 对象 。这个 对象代表一个元素
private static class Entry<E> { E element; //当前元素 Entry<E> next; //下一个 Entry<E> previous; //前一个 Entry(E element, Entry<E> next, Entry<E> previous) { this.element = element; this.next = next; this.previous = previous; } } private transient Entry<E> header = new Entry<E>(null, null, null); private transient int size = 0; /** * Constructs an empty list. */ public LinkedList() { header.next = header.previous = header; //都指给自己 }
增加元素的时候 首先要创建一个 newEntry 将newEntry 前一个元素的next指给自己,将自己的next 的元素的previous 指向自己。 通俗点说,有2个位置,新来的坐后面,对面的人说,我是你的下一个,对将要来的第3个人说,我是你的前一个。
private Entry<E> addBefore(E e, Entry<E> entry) { Entry<E> newEntry = new Entry<E>(e, entry, entry.previous); newEntry.previous.next = newEntry; newEntry.next.previous = newEntry; size++; modCount++; return newEntry; }
删除元素的时候 就告诉你前面的说我走了,你的后面的将是我的后面的。告诉你的后面,你的前面的将是我的前面的。我自己的都为空,你们再也找不到我了。3人行变成2人行。
public boolean remove(Object o) { if (o==null) { for (Entry<E> e = header.next; e != header; e = e.next) { if (e.element==null) { remove(e); return true; } } } else { for (Entry<E> e = header.next; e != header; e = e.next) { if (o.equals(e.element)) { remove(e); return true; } } } return false; } private E remove(Entry<E> e) { if (e == header) throw new NoSuchElementException(); E result = e.element; e.previous.next = e.next; e.next.previous = e.previous; e.next = e.previous = null; e.element = null; size--; modCount++; return result; }
在LinkedList 里面 查找是意见比较麻烦的事情,因为没有直接的索引,得一个一个去询问,jdk里面给的方法是:如果index >size/2 从后面找,否则从前面找。一直找到为止
private Entry<E> entry(int index) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("Index: "+index+ ", Size: "+size); Entry<E> e = header; if (index < (size >> 1)) {//右移一位 for (int i = 0; i <= index; i++) e = e.next; } else { for (int i = size; i > index; i--) e = e.previous; } return e; }
LinkedList 总结: 他是一个非线性安全的基于双向链表实现的容易。元素相互之间都非常熟悉。
Vector
Vector 其实跟ArrayList 的实现方式基本相同,但是他的方法前面都加了 synchronized.还有一点区别就是他的扩容策略跟ArrayList不一样。
private void ensureCapacityHelper(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object[] oldData = elementData; //如果容量不足,将原来的容量*2 int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2); if (newCapacity < minCapacity) { newCapacity = minCapacity; } elementData = Arrays.copyOf(elementData, newCapacity); } }
Vector 总结: 他是一个线程安全的ArrayList 。
Stack
Stack 继承自Vector push 操作就是vector 的addElement peek 获得最后一个元素。pop 调用peek 同时删除最后一个元素。
发表评论
-
使用 cxf axis1.x axis2 开发WebService
2014-02-26 14:50 1355cxf======================== ... -
基于red5 dsj 的java 处理视频流和一些疑问
2013-06-19 16:17 5656最近夭折了一个项目,由于我预研失败,同时我将被惩罚,被外派去 ... -
5分钟 熟练使用spring Aop
2013-06-09 09:56 4839声明:所有的5分钟系列博客都停留在使用的基础上,具体原理, ... -
5分钟 玩转google Gson
2013-06-05 17:18 11035google gson 是一个非常轻量的java 对象与j ... -
如何在springMVC 中对REST服务使用mockmvc 做测试
2013-06-05 09:06 46858spring 集成测试中 对mock 的集成实在是太棒了! ... -
边读边写【7】 ----java 多线程实战【Thread /Executors】
2012-04-20 17:04 1809前面2个月一直忙碌,但是还是不忘在iteye 上发发帖子,写写 ... -
struts2 上传下载模板
2012-04-20 09:38 2794第一 struts2 更新比较慢。核心的xwork 基本不变。 ... -
struts2 上传下载模板
2012-04-18 22:21 0struts2下载文件时出错提示:java.lang.Clas ... -
java乱码补充 : 移植乱码 问题
2012-04-18 12:00 1634上一篇: jquery ajax struts2 数据库等中 ... -
jquery ajax struts2 数据库等中文乱码问题解决大全
2012-04-18 09:31 4858ok 乱码了。 乱码第一件事,静下心来,思考一下这乱码出处的 ... -
java 内存的管理 转载▼
2012-04-17 16:39 1514java 内存的管理 转载▼ 内存的管理(1) 使用Ja ... -
边读边写【6】 ----序列化和反序列化
2012-04-16 15:26 0边读边写【6】 ----序列化和反序列化 -
边读边写【5】 ----java 并发包
2012-04-09 15:09 0java 并发包里面的几个常用的东西 ConCurrentH ... -
边读边写【2】 ----java 集合包之深入Map
2012-04-09 11:49 0Collection 中还有一个Set 但是常用的Set 都是 ... -
边读边写【3】 ----java 集合包之各个集合性能分析
2012-04-10 09:38 1918上次主要看了Map接口,以及Map的选择地址: 。http:/ ... -
hadoop的1TB排序
2012-04-09 09:22 1452hadoop的1TB排序 作者:nos ... -
java 调用lame.exe 将 wav 进行MP3压缩的一些问题
2012-03-05 10:24 5761首先下载附件 lame.exe copy到d 盘,因为代码默认 ... -
使用DES 加密方式对文件进行加密!!!
2012-01-14 17:07 8056DES加密由于在java中非常 ... -
java 大小端存储模式 转化
2012-01-14 16:52 14567所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据 ... -
myeclipse import sun.misc.BASE64Encoder与sun.misc.BASE64Decoder导入错误
2012-01-09 19:05 2230原因你的jre是myeclipse自带的,不是你安装jdk时候 ...
相关推荐
Java集合框架是Java编程语言中的核心组件之一,它为存储、管理和操作对象提供了一套高效且灵活的工具。本系列深入讲解了Java集合框架中的重要组成部分,包括HashMap、ArrayList、LinkedHashMap、HashSet以及...
Java集合体系是Java编程中非常核心的部分,涵盖了用于存储和操作数据的各种数据结构。在Java中,集合主要分为三大接口:List、Set和Map。这些接口各有特点,适用于不同的应用场景。 一、List接口 List接口是单列...
本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...
1. **Java基础** - **数据类型与变量**:了解Java的八种基本数据类型以及引用类型,掌握变量的声明、初始化和作用域。 - **流程控制**:包括条件语句(if, switch)和循环(for, while, do-while)的使用。 - **...
Java集合框架是Java API的一部分,它提供了多种数据结构,如List、Set和Queue等,以及操作这些数据结构的方法。这些数据结构可以帮助我们有效地存储和管理数据。 2. **ArrayList与HashMap**: - **ArrayList**:...
Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...
本文将深入探讨Java集合框架的核心概念,包括`List`、`Set`、`Map`以及它们之间的区别和联系。 #### Java集合框架简介 Java集合框架是Java平台的一部分,它由一系列接口组成,这些接口描述了不同类型的容器,比如...
本文将深入探讨Java集合类的汇总,包括List、Set和Map这三大核心接口及其实现类。 首先,让我们从List接口开始。List是一种有序的集合,允许有重复元素,并且支持通过索引来访问元素。ArrayList和LinkedList是List...
本课程“【IT十八掌徐培成】Java基础第10天-03.List-集合框架-ArrayList”深入讲解了Java中的ArrayList类,这是集合框架中的一个重要组成部分,特别适用于对元素有序且可变大小的需求。 ArrayList是Java.util包下的...
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
本文档将深入探讨Java集合框架的关键组成部分、它们之间的关系以及如何有效地使用它们。 #### 二、Java集合框架结构 Java集合框架的核心部分包括以下几类: - **集合接口**:主要包括`Collection`、`Set`、`List`...
Java集合框架是处理对象组的重要工具,它包括了数组、列表、队列、集合、映射等数据结构。主要分为两大接口:`Collection`和`Map`。`Collection`接口下有`List`(有序可重复)和`Set`(无序不可重复)两个子接口,而...
【标题】"ptf4--------JAVA经典教程"揭示了这是一份关于Java编程语言的教程,可能是一个系列的第四部分,通常这样的命名方式表明它是一个逐步深入的学习资源。"PTF"可能是“Programming Tutorial for”或者是某个...
1. **Java集合框架**:Java集合框架是Java库中的核心部分,提供了一组高效且灵活的数据结构,如List、Set和Map。在这个通讯录项目中,最可能使用的是List接口,因为它允许我们保持元素的顺序,并可以有重复元素。 2...
### Java集合排序及java集合类详解 #### 集合框架概述 集合是Java编程语言中非常核心且广泛使用的部分,对于深入理解和高效使用Java语言至关重要。本文将围绕Java集合框架进行详细介绍,包括Collection、List、Set...
- **集合概述**:Java集合框架是一组用于存储和操作对象的接口和类。 - **List与Set**:List是有序集合,允许重复元素;Set不允许重复元素。 - **Map**:键值对的集合,每个键都是唯一的。 ### Java高级 #### 1. ...
在完成Java集合到Oracle数组的转换后,接下来是实际调用存储过程的过程。这通常通过`CallableStatement`接口完成,其中使用`setARRAY`方法将转换后的数组设置为参数。 ```java public static int updateADInfo...
本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 **1. 集合框架概述** 集合框架是一个统一的数据结构和算法的集合,它提供了对数据进行高效处理的工具。...