ArrayList類的簡單編寫

2021-09-27 05:33:01 字數 4492 閱讀 5055

arraylist類

編寫arraylist類

package com.mage.arrays;

public class arraylist {

private object arrs;

private int size; //陣列實際儲存元素個數

private int capacity;//底層arrs陣列的長度,也就是開的記憶體空間大小

private static final int default_capacity = 10;

public arraylist() {

this(default_capacity);

public arraylist(int capacity) {

arrs = new object[capacity];

this.capacity = capacity;

* @return 返回陣列實際儲存的元素個數

public int size(){

return this.size;

* @return 返回當前arraylist底層陣列的容量

public int opacity() {

return arrs.length;

* @return 返回當前陣列是否為null

public boolean isempty() {

return this.size==0;

* 新增元素到指定的位置上

* @param value 新增的元素

* @param index 新增的位置

public void add(object value,int index) {

if(index<0||index>size) {

system.out.println("錯誤引數:index");

return;

//存滿了

if(size==arrs.length) {

resize(size*2);

for(int i=size-1;i>=index;i--) {

arrs[i+1]=arrs[i];

arrs[index]=value;

size++;

* 新增首元素

* @param value 新增的元素值

public void addfirst(object value) {

add(value,0);

* 新增尾元素

* @param value

public void addlast(object value) {

add(value,size);

* 查詢指定元素在當前陣列中的索引位置(只找乙個)

* @param value

* @return 查詢的元素的索引 如果不存在返回-1

public int getindexbyvalue(object value) {

for(int i=0;i

if(arrs[i]==value) {

return i;

return -1;

* 返回指定索引位置上的元素

* @param index 索引

* @return 元素 如果返回null代表當前陣列的入參有誤

public object get(int index) {

if(index<0||index>=size) {

system.out.println("引數有誤:index");

return null;

return this.arrs[index];

* 修改陣列中指定位置上的元素

* @param index 指定的索引

* @param value 修改之後的值

* @return 修改之前的值 如果索引有問題 返回null

public object set(int index,object value) {

if(get(index)==null) {

return null;

object oldvalue=arrs[index];

arrs[index]=value;

return oldvalue;

* 根據索引刪除元素

* @param index 索引

* @return 刪除的元素 如果索引有誤 返回null

public object remove(int index) {

if(get(index)==null) {

return null;

object oldvalue = arrs[index];

for(int i=index;i

arrs[i]=arrs[i+1];

size--;

arrs[size]=null;

if(size==arrs.length/4&&arrs.length/2>0) {

resize(arrs.length/2);

return oldvalue;

* 刪除第乙個元素

* @return

public object removefirst() {

return remove(0);

* 刪除最後元素

* @return

public object removelast() {

return remove(size-1);

* 陣列擴容操作

* @param capacity 新陣列的容量

private void resize(int capacity) {

object newarrs = new object[capacity];

copyof(arrs,newarrs);

arrs = newarrs;

* 陣列複製

* @param src 源陣列

* @param dest 目標陣列

*/無錫**多少錢

private void copyof(object src,object dest) {

for(int i=0;i

dest[i]=src[i];

* 獲取當前arraylist的內容

public string tostring() {

stringbuffer sb = new stringbuffer();

for(int i = 0;i

if(i!=size-1) {

return sb.tostring();

測試類package com.mage.arrays;

public class testarraylist {

public static void main(string args) {

// arraylist儲存資料的物件

arraylist arraylist = new arraylist();// size = 0 capacity 10

//測試增加不同型別值

arraylist.addfirst('a');

arraylist.addfirst("哈哈");

arraylist.addfirst(44);

system.out.println(arraylist.tostring());

//測試在最後位置加值

arraylist.addlast(33);

system.out.println(arraylist.tostring());

//測試元素加滿了,記憶體擴容。

arraylist.addlast(33);

arraylist.addlast(33);

arraylist.addlast(33);

arraylist.addlast(33);

arraylist.addlast(33);

arraylist.addlast(44);

arraylist.addlast(55);

system.out.println(arraylist.tostring());

//測試移除增加元素會撤回擴容嘛

arraylist.remove(0);

system.out.println(arraylist.tostring());

//測試元素個數為原來的四分之一會壓縮一半記憶體嘛

arraylist.remove(0);

arraylist.remove(0);

arraylist.remove(0);

arraylist.remove(0);

arraylist.remove(0);

system.out.println(arraylist.tostring());

//測試修改

arraylist.set(1, "被修改了");

編寫簡單類

設計乙個表示學生的類 student,該類的屬性包括name 姓名 age 年齡 scores 成績,包括語文 數學 英語三科成績,每科成績的型別為整數 此外該類還有3個方法。1 獲取學生姓名的方法 get name 返回型別為str。2 獲取學生年齡的方法 get age 返回型別為int。3 返...

ArrayList的簡單實現

set中的資料物件沒有順序且不可以重複 list中的資料物件有順序且可以重複 arraylist與linkedlist的區別就是陣列與鍊錶的區別,效率高,執行緒不安全 vector底層也是陣列,執行緒安全,但是效率低。每個arraylist例項的初始容量,預設為10,隨著arraylist元素的增加...

ArrayList類的用法

靈活的設定陣列的大小 int32 values int32 list.toarray typeof int32 返回arraylist包含的陣列 這是乙個簡單的例子,雖然沒有包含arraylist所有的方法,但是可以反映出arraylist最常用的用法 用指定的大小來初始化內部的陣列 如果使用arr...