java数据结构博客园_Java数据结构
一、線性數(shù)據(jù)結(jié)構(gòu)
1、Java一維數(shù)組的創(chuàng)建
(1)預(yù)先定義數(shù)組的內(nèi)存空間
int[] arr = new int[3];
// new int[3]是代表創(chuàng)建3個(gè)內(nèi)存地址空間
// 地址空間的序號(hào)是按照0開始的,也就是說0為1號(hào)位置
arr[1] =2; //每二個(gè)內(nèi)存地址空間都賦一個(gè)值 第二個(gè)位置賦值 2
arr[2] =4; //第二個(gè)內(nèi)存地址空間賦值為 4
arr[0] =3; //第一個(gè)內(nèi)存地址空間賦值為 3
//for循環(huán)遍歷arr每一個(gè)數(shù)組元素并且打印for (int i=0;i
System.out.println(arr[i]);
}
(2)? ?ArrayList的創(chuàng)建和使用
import java.util.ArrayList;
import java.util.LinkedList;
public class Case {
public static void main(String[] args){
ArrayList data = new ArrayList();
//add是增加某個(gè)元素
data.add(1);
data.add(3);
data.add(2);
data.add(4);
for (int i=0;i< data.size();i++) {
//get是通過索引獲取元素
System.out.println(data.get(i));
}
System.out.println("------------------------");
//移除某個(gè)索引上的元素
data.remove(2);
for (int i=0;i< data.size();i++) {
System.out.println(data.get(i));
}
System.out.println("------------------------");
/**
* data有1,2,4三個(gè)元素
*/
//判斷ArrayList是否為空
System.out.println(data.isEmpty());
//獲取某個(gè)元素的索引
System.out.println(data.indexOf(4));
}
ArrayList的內(nèi)存地址是相鄰的,假設(shè)動(dòng)態(tài)數(shù)組A有3個(gè)元素a1,a2,a3.如果a1地址為1,則a2,a3為2,3.所以他的遍歷速度很快,獲得元素很快,弊端就是插入和刪除節(jié)點(diǎn)時(shí)速度較慢,就比如在1號(hào)索引插入數(shù)據(jù)a4則a4的內(nèi)存地址為2,那么原先1號(hào)地址的a2以及后面的元素將全部后移。
(3) LinkedList的創(chuàng)建和使用(基于鏈表的數(shù)據(jù)結(jié)構(gòu))
public static voidmain(String[] args) {//創(chuàng)建鏈表(import java.util.LinkedList)
LinkedList data = new LinkedList<>();//add(index,element)增加
data.add(0,2);
data.add(3);
data.add(4);
data.add(5);for(int i=0;i
System.out.println(data.get(i));
}//判斷是否包含元素3
System.out.println(data.contains(3));
}
鏈表數(shù)據(jù)結(jié)構(gòu),的內(nèi)存地址是不連續(xù)的具體如下圖所示:
得益于其內(nèi)存地址無規(guī)律,其鏈表結(jié)構(gòu)圖也從側(cè)面反應(yīng)了,在某個(gè)地方增加節(jié)點(diǎn)(刪除)其后續(xù)節(jié)點(diǎn)不需要移動(dòng),所以其增刪性能優(yōu)于動(dòng)態(tài)數(shù)組。
二、非線性結(jié)構(gòu)
其結(jié)構(gòu)如下圖所示:
A,B,C稱為節(jié)點(diǎn),連接節(jié)點(diǎn)之間的線稱為邊。CDF成為葉節(jié)點(diǎn)(因?yàn)樗鼈儧]有字節(jié)點(diǎn)),而A為根節(jié)點(diǎn)。
常見的樹型:二叉樹(樹的每個(gè)節(jié)點(diǎn)最多只能有兩個(gè)子節(jié)點(diǎn))
(1)二叉搜索樹要求:若它的左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于它的根結(jié)點(diǎn)的值; 若它的右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于它的根結(jié)點(diǎn)的值; 它的左、右子樹也分別為二叉排序樹。
總結(jié)
以上是生活随笔為你收集整理的java数据结构博客园_Java数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java6_64.tar配置_cento
- 下一篇: java中怎么找类的路径_Java中获取