一.数据结构概述
数据结构是计算机存储,组织数据的方式
数据结构是指互相之间存在一种或多种特定关系的数据元素的集合
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和
索引算法和索引技术有关.
-
作用:
- 模拟生活中的数据
- 作为程序员开发的工具
-
需求:
- 模拟数据存储的案例,模拟上场的球衣号码的存储:
Integer[] players = new Integer[5];
-
作为一个教练,要安排上场:
- 初始容量为5的线性列表,准备用来存储场上的5个球衣号码
- 安排5个球衣上场:[11,22,33,44,55]
- 查询指定位置的球员的球衣号码时多少,查询索引位置为2的球衣号码是33
- 根据球衣号码查询该球员在场上的索引位置,44球衣号的球员在场上的索引为3
- 替换场上索引位置为2的球员,替换之后该位置的球衣编号为333,333把33替换掉了
- 替换球衣号码为22的球员,替换后,为222
- 把场上索引位置为2的球员罚下场(注意:没有补位)
- 按照球员在场上的位置,打印出球衣号码,打印风格[11,22,33,44,55].
二.数组(Array)
新建BasketBallDemo.java
//数据结构数组
public class BasketBallDemo {
private static Integer[] palyer = null;
private static int size = 0;
// 1)初始容量为5的线性列表,准备用来存储场上的5个球衣号码
public static void inti(int initialcapacity) {
palyer = new Integer[initialcapacity];
}
// 2)安排5个球衣上场:[11,22,33,44,55]
public static void add(Integer palyersnum) {
palyer[size] = palyersnum;
size ++;
}
// 3)查询指定位置的球员的球衣号码是多少,查询索引位置为2的球衣号码是33
private static Integer get(int index) {
return palyer[index];
}
// 4)根据球衣号码查询该球员在场上的索引位置,44球衣号的球员在场上的索引为3
private static int getIndex(int num) {
for (int index = 0; index < size; index++) {
if (palyer[index].equals(num)) {
return index;
}
}
return -1;
}
// 5)替换场上索引位置为2的球员,替换之后该位置的球衣编号为333,333把33替换掉了
private static Integer set(int index,Integer num) {
return palyer[index] = num;
}
// 6)替换球衣号码为22的球员,替换后,为222
private static void setNum(Integer begin_num, Integer end_num) {
set(getIndex(begin_num),end_num);
}
// 7)把场上索引位置为2的球员罚下场(注意:没有补位)
private static void delet(int index) {
if (index >= 0 && index <size) {
for (int i = index; i< size - 1; i++) {
palyer[i] = palyer[i + 1];
}
palyer[size -1] = null;
size --;
}else
System.out.println("亲,没有这个球员哦~");
}
// 8)把场上指定球衣号罚下场
private static void deletNum(int num) {
int index = getIndex(num);
delet(index);
}
// 9)按照球员在场上的位置,打印出球衣号码,打印风格[11,22,33,44,55].
public static void print() {
if (palyer == null) {
System.out.println("null");
}
if (size == 0) {
System.out.println("[ ]");
}
StringBuilder sb = new StringBuilder(size * 3 + 1);
sb.append("[");
for (int i = 0; i < size; i++) {
if (i < size - 1) {
sb.append(palyer[i] + ",");
}else{
sb.append(palyer[i]);
}
}
sb.append("]");
System.out.println(sb);
}
public static void main(String[] args) {
// 1)初始容量为5的线性列表,准备用来存储场上的5个球衣号码
inti(5);
// 2)安排5个球衣上场:[11,22,33,44,55]
add(11);
add(22);
add(33);
add(