今天介绍的是java里面的顺序表。
目录
1.新建一个类并且初始化几个变量
2.display方法 :展示数组
3.add方法:添加新元素
4.contains:查询需要找的元素在不在数组中
indexOf:找到这个元素
5.get和set:获取某位置的元素
1.新建一个类并且初始化几个变量
public class ArrayList {
public int elem[];//定义数组
public int UsedSize;//定义数组使用了的大小
public static final int DEFAULT_SIZE = 10;
public ArrayList(){
this.elem = new int[DEFAULT_SIZE];//把elem数组的大小初始化为10
}
}
2.display方法 :展示数组
public void display(){
for (int i = 0; i <= UsedSize; i++) {
System.out.println(this.elem[i] + " ");
//只要把每一个elem里面的元素打印出来即为展示该数组
}
}
3.add方法:添加新元素
public void add(int pos,int data){ //pos为添加到的位置,data为要添加的数据
if(isFull()){
this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
//判定数组是否是满的,如果是满的就需要用Arrays.copyOf函数扩容至两倍
}
if(pos < 0 || pos > UsedSize){
System.out.println("这个位置不合法");
}
//pos需要大于0,并且小于数组的大小
for (int i = this.UsedSize - 1; i >= pos ; i--) {
this.elem[i+1] = this.elem[i];
//前一个元素的值覆盖到后一个元素的值,可以让pos位置的元素和pos位置后一个元素的值相同
}
this.elem[pos] = data;
this.UsedSize++;
}
public boolean isFull(){
if(UsedSize > elem.length){
return true;
}
return false;
}
4.contains:查询需要找的元素在不在数组中
indexOf:找到这个元素
public boolean contains(int toFind){
if(isFull()){
System.out.println("这个位置不合法 数组满了");
}
for (int i = 0; i < this.UsedSize; i++) {
if(this.elem[i] == toFind){
return true;
}
}
return false;
}
public int indexOf(int toFind){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
for (int i = 0; i < this.UsedSize; i++) {
if(this.elem[i] == toFind)
return i;
}
System.out.println("这个数字不在数组中");
return -1;
}
5.get和set:获取某位置的元素
public int get(int pos){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
if(pos < 0 || pos > UsedSize) {
System.out.println("这个位置不合法");
}
return this.elem[pos];
}
public void set(int pos,int val){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
if(pos < 0 || pos > UsedSize) {
System.out.println("这个位置不合法");
}
this.elem[pos] = val;
}
完整代码:
import java.util.Arrays;
public class ArrayList {
public int elem[];
public int UsedSize;
public static final int DEFAULT_SIZE = 10;
public ArrayList(){
this.elem = new int[DEFAULT_SIZE];
}
public void display(){
for (int i = 0; i <= UsedSize; i++) {
System.out.println(this.elem[i] + " ");
}
}
public void add(int pos,int data){
if(isFull()){
this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
}
if(pos < 0 || pos > UsedSize){
System.out.println("这个位置不合法");
}
for (int i = this.UsedSize - 1; i >= pos ; i--) {
this.elem[i+1] = this.elem[i];
}
this.elem[pos] = data;
this.UsedSize++;
}
public boolean isFull(){
if(UsedSize > elem.length){
return true;
}
return false;
}
public boolean contains(int toFind){
if(isFull()){
System.out.println("这个位置不合法 数组满了");
}
for (int i = 0; i < this.UsedSize; i++) {
if(this.elem[i] == toFind){
return true;
}
}
return false;
}
public int indexOf(int toFind){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
for (int i = 0; i < this.UsedSize; i++) {
if(this.elem[i] == toFind)
return i;
}
System.out.println("这个数字不在数组中");
return -1;
}
public int get(int pos){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
if(pos < 0 || pos > UsedSize) {
System.out.println("这个位置不合法");
}
return this.elem[pos];
}
public void set(int pos,int val){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
if(pos < 0 || pos > UsedSize) {
System.out.println("这个位置不合法");
}
this.elem[pos] = val;
}
public void remove(int key){
if(isFull()) {
System.out.println("这个位置不合法 数组满了");
}
int index = indexOf(key);
if(index == -1){
System.out.println("这个要删除的元素不存在");
return;
}
for (int i = index; i < UsedSize; i++) {
this.elem[i] = this.elem[i+1];
}
UsedSize--;
}
public void clear(){
UsedSize = 0;
}
}
public class TestDemo {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
System.out.println("添加前");
arrayList.display();
arrayList.add(0,3);
arrayList.add(1,35);
arrayList.add(2,37);
arrayList.add(3,39);
arrayList.add(4,33);
arrayList.add(5,27);
System.out.println("添加后");
arrayList.display();
System.out.println("删除第三个元素37");
arrayList.remove(37);
arrayList.display();
}
}