⑴ java常用的幾種數據結構,堆棧,隊列,數組,鏈
下面給你簡單介紹:堆棧,隊列,數組,鏈表
堆棧
採用該結構的集合,對元素的存取有如下的特點:
先進後出(即,存進去的元素,要在後它後面的元素依次取出後,才能取出該元素)。例如,子彈壓進彈夾,先壓進去的子彈在下面,後壓進去的子彈在上面,當開槍時,先彈出上面的子彈,然後才能彈出下面的子彈。
棧的入口、出口的都是棧的頂端位置
壓棧:就是存元素。即,把元素存儲到棧的頂端位置,棧中已有元素依次向棧底方向移動一個位置。
彈棧:就是取元素。即,把棧的頂端位置元素取出,棧中已有元素依次向棧頂方向移動一個位置。
隊列
採用該結構的集合,對元素的存取有如下的特點:
先進先出(即,存進去的元素,要在後它前面的元素依次取出後,才能取出該元素)。例如,安檢。排成一列,每個人依次檢查,只有前面的人全部檢查完畢後,才能排到當前的人進行檢查。隊列的入口、出口各佔一側。
數組
採用該結構的集合,對元素的存取有如下的特點:
查找快:通過索引,可以快速訪問指定位置的元素
增刪慢:
指定索引位置增加元素:需要創建一個新數組,將指定新元素存儲在指定索引位置,再把原數組元素根據索引,復制到新數組對應索引的位置。
鏈表
採用該結構的集合,對元素的存取有如下的特點:
多個節點之間,通過地址進行連接。例如,多個人手拉手,每個人使用自己的右手拉住下個人的左手,依次類推,這樣多個人就連在一起了。
節點:兩個部分:數據域(存儲的數值),指針域(存儲地址)
查找慢:想查找某個元素,需要通過連接的節點,依次向後查找指定元素
增刪快:
增加元素:操作如左圖,只需要修改連接下個元素的地址即可。
刪除元素:操作如右圖,只需要修改連接下個元素的地址即可。
⑵ java中什麼時候適合用數組什麼時候用鏈表
數組一般就制定大小了,做查詢的時候比較好。
鏈表的話做插入刪除操作比較方便。
⑶ java數組和鏈表兩種結構的操作效率,在哪些情況下,哪些操作的效率高
數組效率高
數組開辟的是連續的內存空間,是根據基地址和偏移量來算出地址(有乘法和加法運算),然後訪問。
鏈表前一個數據的地址指向下一個數據地址,如:p = p->next;然後用*p訪問。按這個說的話,它就一個賦值語句。
⑷ java把鏈表的值導入數組,數組導入鏈表
你是要 list 裡面所有的數據????
是的話只能用
Integer[] m=new Integer[list.size()];
for(int k=1;k<list.size();k++)m[k]=list.get(k);
for(int k=1;k<m.length;k++)System.out.println(m[k].intValue());
⑸ Java中Hash底層中的數組保存的一張鏈表嗎
Hash沒有底層,它是演算法。你說的是HashMap吧。這個要看Java版本。
Java7的HashMap底層是數組保存的鏈表。
Java8後面對HashMap做了優化,數組保存的鏈表長度為8,鏈表轉為紅黑樹。紅黑樹只有6個元素時,又會轉回鏈表。
⑹ java中數組與鏈表排序
import java.util.*;
/*定義一個一維數組如下:
int a[]={23,-9,89,1,45,11};
編程實現:創建一個鏈表,將數組中的元素按順序取出,
生成一個結點,插入到鏈表中,使鏈表中結點的數據屬性值從小到大排序,
即-9為結點1的值,1為結點2的值,89為最後一個結點的值。*/
public class LinkListArray {
public static void main(String[] args) {
int[] a = new int[]{23,-9,89,1,45,11};
Arrays.sort(a);
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
順便說聲。java里沒有指針。下次不要在這么說了。太外行了。