package edu.basejava.util;
public class ArrayList<V> implements IList<V>
{
private int defaultSize = 10;
private int maxSize;
private int numInList;
private int curr;
private V[] listArray;
public ArrayList()
{
setup(defaultSize);
}
public ArrayList(int size)
{
setup(size);
}
public void append(V item)
{
if (this.numInList > this.maxSize)
Log.error("List is full");
else
{
this.listArray[this.numInList++] = item;
System.out.println("append the element in the "
+ (this.numInList - 1) + " position");
}
}
public void clear()
{
this.numInList = this.curr = 0;
}
public int curr()
{
return this.curr;
}
public V currValue()
{
if (this.isInList())
{
return this.listArray[this.curr];
} else
{
return null;
}
}
public void insert(V item)
{
if (!this.isInList())
{
System.err.println("Bad value for current");
return;
}
if (this.numInList > this.maxSize)
{
System.err.println("List is full");
return;
}
for (int i = this.numInList; i > this.curr; i--)
{
this.listArray[i] = this.listArray[i - 1];
}
this.listArray[this.curr] = item;
this.numInList++;
System.out.println("Insert an element int the " + this.curr
+ " position");
}
public boolean isEmpty()
{
return this.numInList == 0;
}
public boolean isInList()
{
return (curr >= 0) && (curr < this.numInList);
}
public int length()
{
System.out.println("length " + this.numInList);
return this.numInList;
}
public void next()
{
this.curr++;
}
public void prev()
{
this.curr--;
}
public void print()
{
if (this.isEmpty())
System.out.println("()");
else
{
System.out.print("( ");
for (this.setFirst(); this.isInList(); this.next())
System.out.print(this.currValue() + " ");
System.out.println(")");
}
}
public V remove()
{
if (this.isEmpty())
{
if (this.isInList())
{
V it = this.listArray[curr];
for (int i = 0; i < this.numInList - 1; i++)
{
this.listArray[i] = this.listArray[i + 1];
}
this.numInList--;
System.out.println("Remove the " + it + " element");
return it;
} else
{
System.err.println("No current element");
}
} else
{
System.err.println("Can not delete from empty list");
}
return null;
}
public void setFirst()
{
this.curr = 0;
}
public void setPos(int pos)
{
this.curr = pos;
System.out.println("set curr position " + pos);
}
public void setValue(V val)
{
if (this.isInList())
{
this.listArray[this.curr] = val;
System.out.println("set " + this.curr + " elements "
+ "with the value of " + val);
} else
{
System.err.println("No current element");
}
}
@SuppressWarnings("unchecked")
private void setup(int size)
{
if (size < 0)
throw new IllegalArgumentException("Illegal Capacity: " + size);
this.maxSize = size;
this.numInList = 0;
this.listArray = (V[]) new Object[size];
System.out.println("setup a list with " + size + " elements");
}
}
分享到:
相关推荐
Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法
在这个名为“数据结构JAVA实现”的压缩包中,我们可以看到作者提供了三种重要的数据结构——链表、有序二叉树和队列的Java代码实现。 首先,让我们详细探讨链表。链表是一种线性数据结构,与数组不同,它不连续存储...
JavaJava 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java ...
Java数据结构是计算机科学中的重要课程,主要探讨如何有效地存储和组织数据,以便进行高效的操作。这门课程通常包括数组、链表、栈、队列、树、图、哈希表等多种数据结构,并深入讲解它们的特性、操作方法以及在实际...
"Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...
java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题...
《Java数据结构与算法中文版》是一本深入探讨编程核心领域的书籍,主要针对Java程序员,旨在提升他们在数据处理和问题解决能力上的技能。这本书详细介绍了数据结构和算法的基础理论及其在Java语言中的实现,是Java...
Java数据结构和算法.pdf
"Java数据结构实例"这个主题,旨在通过具体的代码实例帮助初学者掌握数据结构的基本概念和使用方式,以此来提升编程思维和问题解决能力。在这个压缩包文件中,我们可以预期找到一些用Java实现的数据结构的源代码。 ...
Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...
根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...
java 数据结构总结的思维导图笔记,个人做的非常全,需要的自行下载
《邓俊辉版Java数据结构源码》是学习数据结构与算法的重要参考资料,它与邓俊辉教授编写的《Java数据结构》教材相配套,旨在帮助读者深入理解数据结构的概念和实现方法。邓俊辉教授的讲解风格清晰易懂,他的源码同样...
《数据结构(Java版本)》这本书正是为此目的而编写,旨在将理论与实际编程相结合,通过Java语言来实现各种经典的数据结构。 首先,书中的基础部分会介绍数据结构的基本概念,如数组、链表、栈和队列。数组是最基本...
Java数据结构和算法第七讲.avi Java数据结构和算法第三十一讲.avi Java数据结构和算法第三十七讲.avi Java数据结构和算法第三十三讲.avi Java数据结构和算法第三十九讲.avi Java数据结构和算法第三十二讲.avi Java...
以上就是Java数据结构测试题中涉及的主要知识点,它们涵盖了数据结构、软件工程、面向对象编程和多线程等多个方面,这些都是Java开发者必备的基础知识。理解并掌握这些内容对于编写高效、安全的Java代码至关重要。
这份“JAVA数据结构实验报告”很可能涵盖了数据结构的基本概念、常见类型以及它们在Java中的实现。下面我们将深入探讨相关知识点。 一、数据结构基本概念 数据结构是指一组数据的存储结构,它可以是线性的,如数组...
Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构
《Java数据结构(老外那版,翻译的)》是一本专门为Java程序员设计的数据结构教程,它以清晰易懂的方式介绍了各种重要的数据结构概念。这本书是初学者的优秀选择,特别是对于那些偏好Java语言,不熟悉C++的人来说,...
该资源包含使用Java实现的绝大部分基础算法和数据结构,包含视频教程,使得算法学习更加容易,该资源从网络收集回来,仅供学习使用