package datastrucates.arrays.noorder;
import java.util.ArrayList;
import java.util.List;
/**
* 数组操作 无序数组,可重复
*
* @author wuxin
*
*/
public class ArraysOperationNoOrderReaptable {
private int[] datas = null;
private int currentIndex = 0;
public ArraysOperationNoOrderReaptable(int length) {
datas = new int[length];
}
/**
* 给数组添加元素并返回添加的元素所在位置
*
* @param data
* @return
*/
public int insert(int data) {
datas[currentIndex] = data;
currentIndex++;
return currentIndex - 1;
}
/**
* 按照元素查找并返回改元素索引
*
* @param data
* @return
*/
public int searchData(int begin, int data) {
int index = -1;
for (int i = begin; i < datas.length; i++) {
if (datas[i] == data) {
index = i;
break;
}
}
return index;
}
/**
* 按照元素的值移除元素
*
* @param data
* @return
*/
public void remove(int data) {
int index = searchData(0, data);
// 1,查找改元素所在位置
while (index > 0) {
// 2.按照所在位置移除元素
for (int i = index; i < currentIndex; i++) {
datas[i] = datas[i + 1];
}
index = searchData(index, data);
currentIndex--;
}
}
public List<Integer> select(int data) {
List<Integer> returnList = new ArrayList<Integer>();
int index = searchData(0, data);
// 1,查找改元素所在位置
while (index > 0) {
returnList.add(datas[index]);
index = searchData(index + 1, data);
}
return returnList;
}
public void printDatas() {
System.out.println("+++++++++++++++++++++++");
for (int data : datas) {
System.out.println(data);
}
}
public static void main(String[] args) {
ArraysOperationNoOrderReaptable arrays = new ArraysOperationNoOrderReaptable(10);
arrays.insert(2);
arrays.insert(3);
arrays.insert(3);
arrays.insert(6);
arrays.insert(1);
arrays.insert(1);
arrays.printDatas();
arrays.remove(1);
arrays.printDatas();
List<Integer> data = arrays.select(3);
System.out.println("returnIndex--->" + data);
}
}