日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java contions_Java数据结构与算法

發布時間:2025/4/5 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java contions_Java数据结构与算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

特點:

在內存中分配連續的空間,只存儲數據,不存儲地址信息。位置就隱含著地址。

1

優點:

1.節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況), 結點之間的邏輯關系沒有占用額外的存儲空間。

2. 索引查找效率高,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。 假設線性表的每個數據元素需占用K個存儲單元,并以元素所占的第一個存儲單元的地址作為數據元素的存儲地址。 則線性表中序號為i的數據元素的存儲地址LOC(a i )與序號為i+1 的數據元素的存儲地址LOC(a i+1 )之間的關系為

LOC(a i+1 ) = LOC(a i ) + K

通常來說,線性表的i號元素a i 的存儲地址為

LOC(a i ) = LOC(a 0 ) + i×K

其中LOC(a 0 )為 0 號元素a 0 的存儲地址,通常稱為線性表的起始地址。

缺點:

1.插入和刪除操作需要移動元素,效率較低。

2.必須提前分配固定數量的空間,如果存儲元素少,可能導致空閑浪費。

3.按照內容查詢效率低,因為需要逐個比較判斷

無參構造(一開始如果用戶沒設置集合大小,初始值就為10)

public ArrayList(){this(10); //數組大小初始為10

}

有參構造(給用戶設置大小)

public ArrayList(intlen){

elementData= newObject[len];

}

集合容量不足時,每次擴容增加50%

voidgrow(){//創建新的數組

Object []newArr= new Object[elementData.length + (elementData.length >> 1)];//擴容1.5倍

for(int i = 0; i < size; i++){//將原來數組的內容存到新數組里

newArr[i]=elementData[i];

}

elementData=newArr;

}

定義List接口

public interface List {//------- 添加 -------

voidadd(Object object);//------- 根據坐標刪除 -------

void remove(intindex);//------- 根據內容刪除 -------

voidremoveobj(Object object);//------- 取出數據 -------

Object get(intindex);//------- 求集合的長度 -------

intsize();//------- 判斷集合是否為空 -------

booleanisEmpty();//------- 根據內容找到元素坐標 -------

intIndexOf(Object object);//------- 判斷元素是否存在 -------

booleancontions(Object object);//------- 根據坐標位置插入元素 -------

void add(intindex, Object object);//------- 修改元素 -------

void replase(intindex, Object object);//------- toString -------

String toString();//------- arraylist迭代器 -------

ArrayList.Ite iterator();

}

定義Iterator接口

public interface Iterator {booleanhasNext();

T next();

}

ArrayList實現類

public class ArrayList implements List {

public Object []elementData;//數組的引用

privateint size; //集合的大小,并非elementData.length

//如果用戶沒設置大小就初始為10

public ArrayList(){this(10); //數組大小初始為10

}//集合的大小等于用戶設置的大小

public ArrayList(intlen){

elementData= newObject[len];

}//數組的擴容

voidgrow(){//創建新的數組

Object []newArr= new Object[elementData.length + (elementData.length >> 1)];//擴容1.5倍

for(int i = 0; i < size; i++){//將原來數組的內容存到新數組里

newArr[i]=elementData[i];

}

elementData=newArr;

}//在集合的尾部添加元素

publicvoidadd(Object object) {//如果數組長度不夠就調用擴容

if(elementData.length <=size){

grow();

}

elementData[size]=object;//大小增加一位

size++;

}//根據坐標刪除元素

publicvoid remove(intindex) {//判斷用戶是否輸入錯誤

if(index<0|| index >size-1){throw new IndexOutOfBoundsException("索引越界"+index);

}

Object element=elementData[index];//向前移動元素

for (int i = index; i

elementData[i]=elementData[i+1];

}//最后一個元素置為空

elementData[size-1]=null;

size--;

}//根據元素刪除

publicvoidremoveobj(Object object) {int index =IndexOf(object);//判斷用戶是否輸入錯誤!

if(index<0){throw newNullPointerException();

}

remove(index);

}//根據坐標得到元素

public Object get(intindex) {returnelementData[index];

}//求集合的長度

publicintsize() {returnsize;

}//判斷是否為空

publicbooleanisEmpty() {return size == 0;

}//根據元素找到坐標

publicintIndexOf(Object object) {int i = 0;while(i

}

i++;

}returni;

}//判斷元素是否存在

publicbooleancontions(Object object) {boolean flag = false;for(int i = 0; i < size; i++){if(elementData[i].equals(object)){

flag= true;break;

}

}returnflag;

}//根據坐標位置添加元素

publicvoid add(intindex, Object object) {if(size >=elementData.length){

grow();

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

elementData[i]= elementData[i - 1];

}

elementData[index]=object;

size++;

}//修改元素

publicvoid replase(intindex, Object object) {

elementData[index]=object;

}//重寫toString

public String toString(){

StringBuilder str= new StringBuilder("[");for(int i = 0; i < size; i++){//判斷是否到了最后一位,如果到了就不添加,

if(i == size - 1){

str.append(elementData[i]);break;

}else{

str.append(elementData[i]+ ",");

}

}

str.append("]");returnstr.toString();

}//------- 迭代器 -------

public Ite iterator(){return newIte();

}

public class Iteimplements Iterator{int cursor = 0; //指向當前元素,默認是0

public ArrayList arr= newArrayList();

publicbooleanhasNext() {return cursor !=size;

}

public T next() {int i = cursor; //保留當前值

cursor++;//自增

//進行判斷,防止越界

if (i >size) {throw new RuntimeException("沒有元素");

}return(T) elementData[i];

}

}

}

自定義異常(不自定義也沒關系,java自帶也有)

public class IndexOutOfBoundsException extends RuntimeException{

public IndexOutOfBoundsException() { }

public IndexOutOfBoundsException(String message) {

super(message);

}

}

Java數據結構與算法之ArrayList

原文:https://www.cnblogs.com/xiewangfei123/p/12933568.html

總結

以上是生活随笔為你收集整理的java contions_Java数据结构与算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。