SuperArray

package com.lovo.array;

public class SuperIntArray {
//属性
public int[] array;

private int index;//代表两层含义:1、下一个元素所在的下标;2、已经放了多少个元素。

public SuperIntArray(){
this.array = new int[20];
}

//行为
//放入元素
public void add(int num){
if(this.index >= this.array.length){
//扩容
int[] newArray = new int[this.array.length + 10];
System.arraycopy(this.array, 0, newArray, 0, this.array.length);
this.array = newArray;
}
//把传入的num放入到array当中去
this.array[index] = num;
this.index++;
}

//得到某个元素
public int get(int index){
if(index < this.index && index >= 0){
return this.array[index];
}
throw new ArrayIndexOutOfBoundsException(index);
}

//修改某个元素
public void set(int index,int newNum){
if(index < this.index && index >= 0){
this.array[index] = newNum;
}
throw new ArrayIndexOutOfBoundsException(index);
}

//删除某个位置的元素
public void remove(int index){
if(index < this.index && index >= 0){
System.arraycopy(this.array, index + 1, this.array, index , this.array.length - index - 1);
this.index -- ;
if(this.array.length - this.index >= 10 && this.array.length > 20){
int[] newArray = new int[this.array.length - 10];
System.arraycopy(this.array, 0, newArray, 0, newArray.length);
this.array = newArray;
}
}
throw new ArrayIndexOutOfBoundsException(index);
}

//获得元素的个数
public int size(){
return this.index;
}

public int getCapibility(){
return this.array.length;
}

}

时间: 2024-08-10 17:01:02

SuperArray的相关文章

自写超级数组

1 package com.lovo; 2 3 import java.util.Arrays; 4 5 /** 6 * 超级数组 7 * 8 * @author Administrator 9 * 10 * @param <T>泛型参数 11 */ 12 public class SuperArray<T> { 13 private T[] array; 14 private int size; 15 16 /** 17 * 超级数组的构造器 18 */ 19 public Su

Java Magic. Part 4: sun.misc.Unsafe

原文地址 译文地址 译者:许巧辉 校对:梁海舰 Java是一门安全的编程语言,防止程序员犯很多愚蠢的错误,它们大部分是基于内存管理的.但是,有一种方式可以有意的执行一些不安全.容易犯错的操作,那就是使用Unsafe类. 本文是sun.misc.Unsafe公共API的简要概述,及其一些有趣的用法. Unsafe 实例 在使用Unsafe之前,我们需要创建Unsafe对象的实例.这并不像Unsafe unsafe = new Unsafe()这么简单,因为Unsafe的构造器是私有的.它也有一个静

【C++探索之旅】第一部分第九课:数组威武,动静合一

内容简介 1.第一部分第九课:数组威武,动静合一 2.第一部分第十课预告:文件读写,海阔凭鱼跃 数组威武,动静合一 上一课<[C++探索之旅]第一部分第八课:传值引用,文件源头>中,我们学习了函数参数的不同传递形式:值传递和引用传递,也学习了如何用头文件和源文件来更好地组织项目. 在不少程序中,我们都需要使用多个相同类型的变量.例如:一个网站的用户名列表(一般是string类型):或者一场比赛的前10个最佳得分(一般是int类型). 类似地,C++和大多数编程语言一样,也有将多个相同类型的数据

Java sun.misc.unsafe类的使用

Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的.如果你想搞破坏,可以使用Unsafe这个类.这个类是属于sun.*API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档. 1.实例化sun.misc.Unsafe 如果你尝试创建Unsafe类的实例,基于以下两种原因是不被允许的. 1).Unsafe类的构造函数是私有的: 2).虽然它有静态的getUnsafe()方法,但是如果你尝试

并行编程(2) - sum.msic.Unsafe 二

整理了几个以前从网上记录sum.msic.Unsafe类的示例,供大家参考: package com.fish.unsafe; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Modifier;

sun.misc.unsafe

Java中大部分错误都是基于内存管理方面的.如果想破坏,可以使用Unsafe这个类. 实例化Unsafe: 下面两种方式是不行的 private Unsafe() {} //私有构造方法 @CallerSensitive public static Unsafe getUnsafe() { Class var0 = Reflection.getCallerClass(); if(!VM.isSystemDomainLoader(var0.getClassLoader())) {//如果不是JDK

sun.misc.unsafe类的使用

这个帖子是关于JAVA中鲜为人知的特性的后续更新,如果想得到下次在线讨论的更新,请通过邮件订阅,并且不要忘了在评论区留下你的意见和建议. Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的.如果你想搞破坏,可以使用Unsafe这个类.这个类是属于sun.* API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档. 实例化sun.misc.Unsafe 如果你尝试创建Unsafe类的实例,

代码整洁之道——2、函数

一.函数参数(两个或者更少) 限制函数的参数至关重要,因为这样测试函数会更简单.有超过三个以上的参数,测试的时候就要使用不同参数测无数的场景. 一个或者两个参数是理想情况.如果可能的话避免三个参数.三个以上的参数应该杜绝.通常,如果有两个以上的参数,说明这个函数做的太多了.大多数情况下,一个高质量的对象就足够充当一个参数了,当你发现你需要多个参数的时候,你可以使用一个对象来代替. 可以用ES6解构赋值,使函数期望的参数清晰化.这样做有几个好处: 1.他人阅读的时候,一下子就看明白了使用了哪些属性

java的sun.misc.Unsafe类

阅读目录 前言 Unsafe类的作用 获取Unsafe对象 Unsafe类中的API 前言 以下sun.misc.Unsafe源码和demo基于jdk1.7: 最近在看J.U.C里的源码,很多都用到了sun.misc.Unsafe这个类,一知半解,看起来总感觉有点不尽兴,所以打算对Unsafe的源码及使用做个分析: 另外,网上找了份c++的源代码natUnsafe.cc(可惜比较老,Copyright (C) 2006, 2007年的,没找到新的),也就是sun.misc.Unsafe的C++实