概述
1.定义一个接口MyList
public interface MyList {
//增
void add(int num);
//删
boolean delete(int index2);
//改
boolean update(int index2, int num);
//获得值
int get(int index2);
//获得长度
int getLen();
}
2.写一个类实现MyList接口,基于数组实现集合。
public class MyList4Array implements MyList {
int[] arr;
int index;
public MyList4Array(){
arr = new int[10];
index = 0;
}
//增
public void add(int num){
if(index==arr.length){
//数组扩容
arr = Arrays.copyOf(arr, arr.length*2);
}
arr[index] = num;
index++;
}
//删
public boolean delete(int index2){
if(index2<0 || index2>=this.index){
return false;
}
for(int i=index2+1;i<this.index;i++){
arr[i-1] = arr[i];
}
index--;
arr[index] = 0;
return true;
}
//改
public boolean update(int index2,int num){
if(index2>=0 && index2<this.index){
arr[index2] = num;
return true;
}
return false;
}
//查找
public int get(int index2){
if(index2>=0 && index2<this.index){
return arr[index2];
}
throw new RuntimeErrorException(null, "下标越界!");
}
//获得数组长度
public int getLen(){
return this.index;
}
//重写toString方法
public String toString(){
StringBuffer sb = new StringBuffer();
int len = this.index;
for(int i=0;i<len;i++){
sb.append(arr[i]);
sb.append(",");
}
sb.delete(sb.length()-1, sb.length());
return sb.toString();
}
}
3.写一个类实现MyList接口,基于链表实现集合。
public class MyList4Link implements MyList{
public class Node{
public int num;
public Node next;
}
Node start;
Node index;
int count;
public MyList4Link(){
start = new Node();
index = start;
count =0;
}
//增
public void add(int num) {
Node newNode = new Node();
newNode.num = num;
index.next = newNode;
index = newNode;
count++;
}
//删
public boolean delete(int index2) {
if(index2>=0 && index2<count){
Node temNode =start;
for(int i=0;i<index2;i++){
temNode = temNode.next;
}
temNode.next = temNode.next.next;
count--;
return true;
}
return false;
}
//改
public boolean update(int index2, int num) {
if(index2>=0 && index2<count){
Node temNode = start;
for(int i=0;i<=index2;i++){
temNode = temNode.next;
}
temNode.num = num;
return true;
}
return false;
}
//查找
public int get(int index2) {
// TODO Auto-generated method stub
Node temNode = start;
for(int i=0;i<=index2;i++){
temNode = temNode.next;
}
return temNode.num;
}
//获得链表长度
public int getLen() {
return count;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
Node temNode = start;
for(int i=0;i<count;i++){
temNode = temNode.next;
sb.append(temNode.num);
sb.append(",");
}
sb.delete(sb.length()-1, sb.length());
return "MyList4Link ["+sb.toString()+"]";
}
}
4.测试类
public class MyListTest {
public static void main(String[] args) {
System.out.println("数组");
MyList mylist = new MyList4Array();
for(int i=0;i<10;i++){
mylist.add(i);
}
System.out.println(mylist);
System.out.println(mylist.getLen());
mylist.add(11);
System.out.println(mylist);
mylist.delete(0);
System.out.println(mylist);
mylist.update(9, 99);
System.out.println(mylist);
System.out.println(mylist.get(0));
System.out.println("*********");
System.out.println("链表");
MyList list = new MyList4Link();
for(int i=0;i<10;i++){
list.add(i);
}
System.out.println(list);
list.delete(2);
list.update(3,11);
System.out.println(list.get(2));
System.out.println(list);
}
}
最后
以上就是醉熏鼠标为你收集整理的JAVA基于数组实现集合和基于链表实现集合的全部内容,希望文章能够帮你解决JAVA基于数组实现集合和基于链表实现集合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复