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...