自定义行列
自定义队列
数组的交换和数组中的数据的交换是不同的,一个是引用传递,一个是值传递。
队列内部需要数组的支持,归根到底还是要靠数组保存数据。
队列的优点是长度没有固定(可以增加和删除元素),也就可以拥有无限的队列元素(相对于单纯的数组而言,世界上是没有绝对的东西的),有利于庞大的数据处理。
public class Queue { //创建一个队列内部数组 User[] use = new User[0]; //增加一个元素 public void add(User data){ //创建一个数组,用以临时保存队列中的数据 User[] temp = new User[use.length+1]; //将队列中的数据赋给临时数组 for(int i=0;i<use.length;i++){ temp[i] = use[i]; } //将要添加的数据添加到临时数组 temp[temp.length-1] = data; //交换数组 use = temp; } //删除一个元素 public void del(int index){ //创建一个临时数组 User[] temp = new User[use.length-1]; //判断要删除的元素是第几位 if(index == 1){ for(int i=0;i<use.length-1;i++){ use[i] = use[i+1]; } //将队列中的数据赋给临时数组 for(int i=0;i<temp.length;i++){ temp[i] = use[i]; } } if(index == use.length){ for(int i=use.length-1;i>0;i--){ use[i] = use[i-1]; } //将队列中的数据赋给临时数组 for(int i=0;i<temp.length;i++){ temp[i] = use[i+1]; } } if(index>1 && index<use.length){ for(int i=0;i<index;i++){ temp[i] = use[i]; } for(int j=index+1;j<use.length;j++){ temp[j-1] = use[j]; } } //交换数组 use = temp; } /** * 取出指定位置的数据 * @param index * @return */ public User get(int index){ return use[index]; } /** * 队列中元素的个数 * @return */ public int size(){ return use.length; } //程序入口 public static void main(String args[]){ //创建一个队列对象 Queue q = new Queue(); //给队列添加元素 for(int i=0;i<5;i++){ User u=new User(); u.id=i; u.name="用户"+i; //加入到队列中 q.add(u); } //删除一个元素 q.del(3); //打印数据 for(int i=0;i<q.size();i++){ User us=q.get(i); System.out.println((i+1)+"号取出: "+us.name); } } }
public class User { public int id; public String name; }