package com.demo;
public class TArray<T> {
private T[] data;
private int size;
@SuppressWarnings("unchecked")
public TArray(int capacity) {
data = (T[]) new Object [capacity];
size = 0;
}
public TArray() {
this(10);
}
// 获取数组容量
public int getCapacity() {
return data.length;
}
// 获取数组中元素个数
public int getSize() {
return size;
}
// 判断数组是否为空
public boolean isEmpty() {
return size == 0;
}
// 在数组末尾追加元素
public void addLast(T e) {
add(size, e);
}
// 在数组开头添加元素
public void addFirst(T e) {
add(0, e);
}
// 在数组中间插入元素
public void add(int index, T e) {
if (size == data.length)
throw new IllegalArgumentException("add fail,array id full");
if (index < 0 || index > size)
throw new IllegalArgumentException("add fail, need index > 0 and index <=size");
for (int i = size - 1; i >= index; i--)
data[i + 1] = data[i];
data[index] = e;
size++;
}
// 根据引脚获取值
public T get(int index) {
if (index < 0 || index >= size)
throw new IllegalArgumentException("get fail , index < 0 or index >= size");
return data[index];
}
// 根据引脚设置值
public void set(int index, T e) {
if (index < 0 || index >= size)
throw new IllegalArgumentException("get fail , index < 0 or index >= size");
data[index] = e;
}
// 是否包含某个元素
public boolean contains(T e) {
for (int i = 0; i < size; i++) {
if(e.equals(data[i])){
return true;
}
}
return false;
}
//查找某个元素对应的位置
public int find(T e){
for(int i = 0 ; i < size ; i++){
if(e.equals(data[i])){
return i;
}
}
return -1;
}
//删除index对应的元素 返回删除的元素
public T remove(int index){
if(index < 0 || index >= size){
throw new IllegalArgumentException("reomve fail , illegal args");
}
T ret = data[index];
for(int i = index+1 ; i < size ; i++){
data[i-1] = data[i];
}
size--;
return ret;
}
//删除第一个元素
public T removeFirst(){
return remove(0);
}
//删除最后一个元素
public T removeLast(){
return remove(size-1);
}
//根据元素删除数组中对应的元素 并返回删除的值
public boolean removeElement(T e){
boolean flag = true;
int index = find(e);
try {
remove(index);
} catch (Exception e2) {
flag = false;
}
return flag;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("Array: size = %d , capacity = %d \n", size, data.length));
sb.append('[');
for (int i = 0; i < size; i++) {
sb.append(data[i]);
if (i != size - 1) {
sb.append(',');
}
}
sb.append(']');
return sb.toString();
}
}
03 封装属于自己的泛型数组
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- /** * 函数说明:计算$string在$array中重复出现的次数. * @param [array] $ar...