数据结构:把多个数据按照一定的存储方式,存储起来,该存储方式称之为数据结构
不同的数据结构性能也不同,有很多比如数组,队列,链表,栈,哈希表等
数据结构的作用:1,最基本的作用,可以对应用中的多个数据进行存储。
2,面向对象设计:作为程序员开发的中间工具char[]和string之间的关系
/*
* 1):设置初始量(可以存储多少个球员.)
2):安排五个球员上场(11,22,33,44,55).
3):查询指定球员所在的位置(比如,44球员的位置就是3.).
4):查询指定位置是哪一个球员(比如,位置为2的球员是33.).
5):从上场球员中,移除指定球衣号的一个球员.
6):把指定位置的球员换成另一个球员.
7):打印出场上的球衣号码(比如:[11,22,33,44,55]).
*/
public class CBA {
private static int size = 0; //场上有多少几个球员
private static Integer[] elements; //球员球衣号码
public static void main(String[] args) {
init(5);
add(11);
add(22);
add(33);
add(44);
add(55);
show();
System.out.println(getIndexByNum(33));
get(2);
remove(22);
show();
}
//5):从上场球员中,移除指定球衣号的一个球员.
private static void remove(int i) {
int index = getIndexByNum(i);
for(int i2 = index;i<size-1;i++){
elements[i] = elements[i+1];
}
size--;
}
//4):查询指定位置是哪一个球员(比如,位置为2的球员是33.).
private static void get(int i) {
System.out.println(elements[i]);
}
//3):查询指定球员所在的位置(比如,44球员的位置就是3.).
private static Integer getIndexByNum(Integer player){
for (int i = 0; i < size; i++) {
if(player.equals(elements[i])){
return i;
}
}
return -1;
}
//打印上场人员
private static void show() {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elements[i]);
if(i != size-1){
sb.append(",");
}
}
sb.append("]");
System.out.println(sb);
}
//打印球场人员
//上场人员
private static void add(Integer i) {
elements[size] = i;
size++;
}
//初始化
private static void init(int capacity) {
elements = new Integer[capacity];
}
}
数据结构决定了集合框架的方法定义
数组:需要维护这个数组的序列,正是因为这样,插入和删除相对于链表慢.
链表
单向:next
双向:next和prev linkedlist操作首和尾速度很快
如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。
队列
Queue:单向队列.先进先出 后进后出 插入的位置只能从队末开始,从队首移除
Deque:双向队列 先进先出 先进后出 插入的位置可以队首队尾,两端都可以移除
栈Stack
先进后出
根据不同的应用场景,选择合适的数据结构.