Java实现Vector主要操作

  1 package Eric.ADT;
  2
  3 import org.junit.Test;
  4
  5 /**
  6  * <p>
  7  * Title:MyVector
  8  * </p>
  9  * <p>
 10  * Description:Implement vector by java
 11  * </p>
 12  * <p>
 13  * Location:Frostburg
 14  * </p>
 15  *
 16  * @author: Eric.Chen
 17  * @date:2017年9月17日上午9:15:19
 18  */
 19 public class MyVector implements JavaVector, Cloneable {
 20     private static final int InicialCapacity = 100;
 21     private int minCapacity;
 22     private Object[] elementData;
 23     private int size;
 24
 25     public MyVector() {
 26         elementData = new Object[InicialCapacity];
 27         size = 0;
 28         minCapacity += elementData.length;//扩容时的增量
 29     }
 30
 31     // 1.添加元素
 32     @Override
 33     public void append(Object element) {
 34         if (size == elementData.length) {
 35             ensureCapacity(InicialCapacity);
 36         } else {
 37             elementData[size] = element;
 38             size++;
 39         }
 40
 41     }
 42
 43     // 2.清空向量
 44     @Override
 45     public void clear() {
 46         int size = elementData.length;
 47         for (int i = 0; i < elementData.length; i++) {
 48             elementData[i] = (Integer) null;
 49             size--;
 50         }
 51
 52     }
 53
 54     // 3.判断向量中是否含有特定元素
 55     @Override
 56     public boolean contains(Object element) {
 57         for (int i = 0; i < elementData.length; i++) {
 58             if (element.equals(elementData[i]))
 59                 return true;
 60         }
 61         return false;
 62     }
 63
 64     // 4.查找指定元素的角标
 65     @Override
 66     public Object elementAt(int index) {
 67         for (int i = 0; i < elementData.length; i++) {
 68             if (elementData[i].equals(elementData[index])) {
 69                 return elementData[i];
 70             }
 71         }
 72         return null;
 73     }
 74
 75     // 5.查找指点角标对应的值
 76     @Override
 77     public int indexOf(Object element) {
 78         for (int i = 0; i < elementData.length; i++) {
 79             if (elementData[i].equals(element))
 80                 return i;
 81         }
 82         return -1;
 83     }
 84
 85     // 6.判断向量是否为空
 86     @Override
 87     public boolean isEmpty() {
 88         if (size() == 0)
 89             return false;
 90         else
 91             return true;
 92     }
 93
 94     // 7.删除指定角标的元素
 95     @Override
 96     public void removeAt(int index) {
 97         for (int i = index; i < elementData.length - 1; i++) {
 98             elementData[i] = elementData[i + 1];
 99         }
100         Object[] temp = new Object[elementData.length - 1];
101         for (int i = 0; i < elementData.length - 1; i++) {
102             temp[i] = elementData[i];
103         }
104         elementData = temp;
105
106     }
107
108     // 8.移除指定元素
109     @Override
110     public void remove(Object element) {
111         // TODO Auto-generated method stub
112         for (int i = 0; i < elementData.length; i++) {
113             if (element.equals(elementData[i])) {
114                 removeAt(i);
115             }
116         }
117
118     }
119
120     // 9.用指定的元素代替指定角标的值
121     @Override
122     public void replace(int index, Object element) {
123         // TODO Auto-generated method stub
124         elementData[index] = element;
125
126     }
127
128     // 10.返回向量中的元素个数,不包括null
129     @Override
130     public int size() {
131         int num = 0;
132         for (int i = 0; i < elementData.length; i++) {
133             if (elementData[i] != null) {
134                 num++;
135             }
136         }
137         return num;
138     }
139
140     // 11.当数组长度不够时进行扩容
141     @Override
142
143     public boolean ensureCapacity(int minCapacity) {
144         Object[] temp = new Object[elementData.length + minCapacity];
145         for (int i = 0; i < temp.length; i++) {
146             temp[i] = elementData[i];
147         }
148         elementData = temp;
149         return true;
150     }
151
152     // 12.反转数组
153     @Override
154     public void reverse() {
155         Object[] data = new Object[elementData.length];
156         int j = data.length - 1;
157         for (int i = 0; i < size(); i++) {
158             data[j] = elementData[i];
159             j--;
160         }
161         elementData = data;
162     }
163
164     // 13.克隆数组
165     @Override
166     public Object clone() {
167         Object[] cloneArray = new Object[size()];
168         for (int i = 0; i < size(); i++) {
169             cloneArray[i] = elementData[i];
170         }
171         return cloneArray;
172
173     }
174
175     // 14.移除指定区域的元素 包括开头,不包括结尾
176     @Override
177     public void removeRange(int fromIndex, int toIndex) {
178         Object[] temp = new Object[size() - (toIndex - fromIndex)];
179         int j = 0;
180         for (int i = 0; i < size(); i++) {
181
182             if (i < fromIndex || i >= toIndex) {
183                 temp[j] = elementData[i];
184                 j++;
185             }
186         }
187
188         elementData = temp;
189     }
190
191     // 15.没看懂要干什么,哈哈哈
192     @Override
193     public void merge(MyVector vector2) {
194         // TODO Auto-generated method stub
195     }
196
197     // 16.在指定位置插入指定元素
198     @Override
199     public void insertAt(int index, Object element) {
200         for (int i = size() - 1; i >= index; i--) {
201             elementData[i + 1] = elementData[i];
202         }
203         elementData[index] = element;
204         size++;
205     }
206
207     // 17.将数组转化成字符串返回
208     @Override
209     public String toString() {
210         StringBuffer sb = new StringBuffer();
211         for (int i = 0; i < size(); i++) {
212             sb.append(elementData[i]);
213             sb.append(",");
214         }
215         String substring = sb.substring(0);
216         return substring;
217     }
218
219     // 18.单元测试块
220     @Test
221     public void Test() {
222         append(20);
223         append(30);
224         append(40);
225         append(50);
226         append(60);
227         append(10);
228         append(70);
229         String strArray = toString();
230         System.out.println(strArray);
231     }
232 }
时间: 2024-11-03 05:31:40

Java实现Vector主要操作的相关文章

Java中vector用法整理

ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector的创建.向Vector中添加元素.从Vector中删除元素. * 统计Vector中元素的个数和遍历Vector中的元素. */ public class VectorDemo{ public static void main(String[] args){ //Vector的创建 //使用Vector

Java中vector的使用方法

Vector的使用 vector类底层数组结构的,它包含可以使用整数索引进行访问的组件.不过,vector的大小可以根据需要增大或缩小,以适应创建vector后进行添加或移除项的操作,因此不需要考虑元素是否越界或者会不会浪费内存的问题. 由vector的iterator和listIterator方法所返回的迭代器是快速失败的:也即是它不能并发执行操作.如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的remove或add方法之外的任何其他方式),则迭代器将抛出ConcurrentM

java中的集合操作类(未完待续)

申明: 实习生的肤浅理解,如发现有错误之处,还望大牛们多多指点 废话 其实我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList<XXXXX>(); 但是我仅仅只是了解,list这个类是一个可变长用来存储的对象实例的类,我甚至觉得这个List对象可以理解成数组,但是却又与java中咱们正常理解的数组很多的不同,比如说,他的长度可以随着需要自动增长,比如说,实例化一个List类就和咱们声明数组的时候是不一样的! 今天的实习生活

Java中Vector和ArrayList的区别

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

java.util.vector中的vector的详细用法

ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector的创建.向Vector中添加元素.从Vector中删除元素. * 统计Vector中元素的个数和遍历Vector中的元素. */ public class VectorDemo{ public static void main(String[] args){ //Vector的创建 //使用Vector

五:Java之Vector类专题

据说期末考试要考到Vector 这个类,出于复习需要在这里就要好好整理下这个类了. 一.基本概念 Vector 是可实现自动增长的对象数组. java.util.vector提供了向量类(vector)以实现类似动态数组的功能.在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量.比如在c,c++中所谓的"动态数组"一般都由指针来实现.为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一.事实上,灵活使用数组也可以完成向

Java 集合Vector源码深入解析

概论 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. 第1部分 Vector介绍 Vector简介 Vector 是矢量队列,它是JDK1.0版本添加的类.继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口.Vector 继承了AbstractList,实现了List:所以,它是一个队列,支持相关的添加.删除.修

Java集合 -- Vector

原文:https://www.cnblogs.com/skywang12345/p/3308833.html 第1部分 Vector介绍 Vector 是矢量队列,它是JDK1.0版本添加的类.继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口. Vector 继承了AbstractList,实现了List:所以,它是一个队列,支持相关的添加.删除.修改.遍历等功能. Vector 实现了Randm

java 对mongodb的操作

java 对mongodb的操作 1.1连单台mongodb Mongo mg = newMongo();//默认连本机127.0.0.1  端口为27017 Mongo mg = newMongo(ip);//可以指定ip 端口默认为27017 Mongo mg = newMongo(ip,port);//也可以指定ip及端口号 1.2连双台mongodb //ip为主机ip地址,port为端口号,dataBaseName相当于数据库名 DBAddress left = new DBAddre