Java-抽取数组结构(ArraryList)工具类
修改我们得PlayerList类,使之不仅仅可以存储Integer类型的元素,可以存储任意数据类型的元素.
public class PlayerList{
//存储场上球员的球衣号码
private static Integer[] players = null;
解决方案:把Integer类型数组改变为Object类型数组.--->MyArrayList(基于数组算法的列表).
/**
* 基于数组的列表集合
* @author Lin
*
*/
public class MyArrayList {
// 用来存储任意类型的东西
public Object[] element = null;
// 设置球场上的元素个数
public int size = 0;
// 1):初始容量为5的线性列表,准备用来存储场上的5个球衣号码. 初始化
protected void init(int initial) { // 代码的增强
if (initial < 0) {
throw new IllegalArgumentException("容量不可以为负");
}
element = new Object[initial];
}
// 2):安排5个球员上场:[11,22,33,44,55].
protected void add(Object num) {
// 判断扩容
if (size == element.length) {
Object[] temp = Arrays.copyOf(element, element.length * 2);
element = temp;
}
element[size] = num;
size++;
}
// 3):查询指定位置的球员的球衣号码是多少.查询索引位置为2的球衣号码是:33.
protected Object getNum(int index) {
if (index < 0 || index > size) { // 代码的增强
throw new IllegalArgumentException("索引越界啦");
}
return element[index];
}
// 4):根据球衣号码查询该球员在场上的索引位置. 44球衣号的球员在场上的索引位置是:3.
// 查询索引位置要一个一个元素查询
int getIndex(Object num) {
for (int index = 0; index < size; index++) {
if (element[index].equals(num)) {
return index;
} else {
System.out.println("没有这位球员");
}
}
return -1; // 注意此刻return位置,在for循环外面, 一直判断完成,没有符合的index ,则返回 -1
}
// 5):替换场上索引位置为2的球员,替换之后该位置的球衣编号为333. 333把33替换了.
void set(int index, Object newNum) {
if (index < 0 || index > size) { // 代码的增强
throw new IllegalArgumentException("索引越界啦");
}
element[index] = newNum;
}
// 6):替换球衣号码为22的球员,替换之后为222.
void updata(Object oldNum, Object newNum) {
int index = getIndex(oldNum); // 直接调用获取索引地址的方法,判断是否存在
if (index > 0) {
set(index, newNum); // 如果存在 ,调用 5 的方法
}
}
// 7):把场上索引位置为2的球衣罚下场(注意:罚下,没有补位.).
protected void delete(int index) {
if (index < 0 || index > size) { // 代码的增强
throw new IllegalArgumentException("索引越界啦");
}
for (int i = index; i < size - 1; i++) { // 删除一个对象之后,将索引位置为index后面的元素往前移动一个位置
element[i] = element[i + 1]; // 后一位球衣号往前挪一个位置
}
element[size - 1] = null; // 将最后一个对象赋值null
size--;
}
// 8):按照球员在场上的位置,打印出球衣号码,打印风格:[11,22,33,44,55].
protected void print() {
if (element == null) {
System.out.println("null");
return;
}
if (size == 0) {
System.out.println("[]");
return;
}
StringBuilder sb = new StringBuilder();// 此处没有定义长度的话默认值为16
sb.append("[");
for (int index = 0; index < size; index++) {
sb.append(element[index]);
if (index != (size - 1)) {// 判断是不是最后一个元素
sb.append(",");
} else {
sb.append("]");
}
}
System.out.println(sb.toString());
}
public int size() {
// TODO Auto-generated method stub
return 0;
}
}
共有 0 条评论