Java动态数组

Java动态数组,java,arrays,dynamic,Java,Arrays,Dynamic,我正在学习一门java编程课程,我需要关于动态数组的帮助。我环顾四周,找不到符合我简单程度的方法。我在班上不远,刚学了基础知识,所以我知道的不多,但我需要知道如何制作动态数组 以下是我们获得的两个示例程序: public class DynamicArrayOfInt { private int[] data; public DynamicArrayOfInt() { data = new int[1]; } public int get(

我正在学习一门java编程课程,我需要关于动态数组的帮助。我环顾四周,找不到符合我简单程度的方法。我在班上不远,刚学了基础知识,所以我知道的不多,但我需要知道如何制作动态数组

以下是我们获得的两个示例程序:

public class DynamicArrayOfInt
{
    private int[] data;
    public DynamicArrayOfInt()
    {
        data = new int[1];
    }
    public int get(int position)
    {
        if (position >= data.length)
            return 0;
        else 
            return data[position];
        }
    public void put(int position, int value)
    {
        if (position >= data.length)
        {
            int newSize = 2 * data.length;
            if (position >= newSize)
                newSize = 2 * position;
            int[] newData = new int[newSize];
            System.arraycopy(data, 0, newData, data.length);
            data = newData;
            System.out.println("Size of dynamic array increased to " + newSize);
        }
        data[position] = value;
    }
}
`
二号

import java.util.Scanner;
public class ReverseWithDynamicArray
{
    public static void main(Sting[] args)
    {
        DyanamicArrayOfInt numbers;
        int numCt;
        int num;
        Scanner scan = new Scanner(System.in);
        numbers = new DynamicArrayOfInt();
        numCt = 0;
        System.out.println("Enter some postive integers; Enter 0 to end");
        while (true)
        { 
            num = scan.nextInt();
            if (num <= 0)
                break;
            numbers.put(numCt, num); 
            numCt++;
        }
        System.out.println("\nYour numbers in reverse order are:\n");
        for (int i = numCt - 1; i >= 0; i--)
        {
            System.out.println( numbers.get(i) );
        }
    }
}
import java.util.Scanner;
公共类反向使用DynamicCarray
{
公用静态空干管(Sting[]参数)
{
并矢数;
int numCt;
int-num;
扫描仪扫描=新扫描仪(System.in);
数字=新的动态carrayoff();
numCt=0;
System.out.println(“输入一些正整数;输入0结束”);
while(true)
{ 
num=scan.nextInt();
如果(num=0;i--)
{
System.out.println(number.get(i));
}
}
}

第二个应该继承第一个数组,并允许您在键入数组后创建更多数组。但当我使用这些数组时,它表示我有一个错误,并且它表示只有在明确请求注释处理时才接受类名
ReverseWithDynamicArray

将此用于第一个示例程序,我更改了您的System.arraycopy上的参数

public class DynamicArrayOfInt
{
private int[] data;
public DynamicArrayOfInt()
{
    data = new int[1];
}
public int get(int position)
{
    if (position >= data.length)
        return 0;
    else 
        return data[position];
    }
public void put(int position, int value)
{
    if (position >= data.length)
    {
        int newSize = 2 * data.length;
        if (position >= newSize)
            newSize = 2 * position;
        int[] newData = new int[newSize];
        System.arraycopy(data, 0, newData, 0, data.length);
        data = newData;
        System.out.println("Size of dynamic array increased to " + newSize);
    }
    data[position] = value;
}
}

将此用于您的第一个示例程序,我在System.arraycopy中更改了您的参数

public class DynamicArrayOfInt
{
private int[] data;
public DynamicArrayOfInt()
{
    data = new int[1];
}
public int get(int position)
{
    if (position >= data.length)
        return 0;
    else 
        return data[position];
    }
public void put(int position, int value)
{
    if (position >= data.length)
    {
        int newSize = 2 * data.length;
        if (position >= newSize)
            newSize = 2 * position;
        int[] newData = new int[newSize];
        System.arraycopy(data, 0, newData, 0, data.length);
        data = newData;
        System.out.println("Size of dynamic array increased to " + newSize);
    }
    data[position] = value;
}
}

你为什么不尝试收藏? 我认为LinkedList最适合它。 虽然我对你的要求不是很确定。 我试图在这里输入一些示例代码:

//create a LinkedList object :
LinkedList ll=new LinkedList();

//Add your items in linked list as many as you like
ll.add("item");// you can also add on a specific position by using ll.add(index, item);

//for getting the length of your LinkedList use:
int size=ll.size();

//for reversing the list items use :

Collections.reverse(list);//or you can manually implement it by using size or length of list

/* for printing the list, simply put it in Sop
(As toString method is overriden in Collection Framework to give a output string in
the form like: [collection items separated with comma] ) */
//注意:ArrayList和Linkedlist之间的区别是 ArrayList实现了RandomAccess接口,因此它为访问任何随机索引提供了恒定的访问时间。因此,使用ArrayList进行检索是最好的,但插入到随机位置ArrayList并不合适,因为它需要调整ArrayList的大小并执行几个移位操作

LinkedList是以带有双链表的节点的形式实现的顺序访问。对于访问任何随机索引,它需要访问该节点的下一个地址。因此,对于随机检索/读取LinkedList是不合适的。但是对于在随机索引上插入,它只需要维护一个要插入的新节点。因此,对于插入tween或您列表中的任何位置LinkedList都是合适的


我希望它能对你有所帮助。

你为什么不尝试收藏? 我认为LinkedList最适合它。 虽然我对你的要求不是很确定。 我试图在这里输入一些示例代码:

//create a LinkedList object :
LinkedList ll=new LinkedList();

//Add your items in linked list as many as you like
ll.add("item");// you can also add on a specific position by using ll.add(index, item);

//for getting the length of your LinkedList use:
int size=ll.size();

//for reversing the list items use :

Collections.reverse(list);//or you can manually implement it by using size or length of list

/* for printing the list, simply put it in Sop
(As toString method is overriden in Collection Framework to give a output string in
the form like: [collection items separated with comma] ) */
//注意:ArrayList和Linkedlist之间的区别是 ArrayList实现了RandomAccess接口,因此它为访问任何随机索引提供了恒定的访问时间。因此,使用ArrayList进行检索是最好的,但插入到随机位置ArrayList并不合适,因为它需要调整ArrayList的大小并执行几个移位操作

LinkedList是以带有双链表的节点的形式实现的顺序访问。对于访问任何随机索引,它需要访问该节点的下一个地址。因此,对于随机检索/读取LinkedList是不合适的。但是对于在随机索引上插入,它只需要维护一个要插入的新节点。因此,对于插入tween或您列表中的任何位置LinkedList都是合适的


我希望它可以帮助您。

System.arraycopy()中缺少一个参数,下面是java.lang.System.arraycopy()方法的声明

src——这是源数组

srcPos——这是源数组中的起始位置

dest——这是目标阵列

destPos——这是目标数据中的起始位置


length——这是要复制的数组元素数。

System.arraycopy()中缺少一个参数,下面是java.lang.System.arraycopy()方法的声明

src——这是源数组

srcPos——这是源数组中的起始位置

dest——这是目标阵列

destPos——这是目标数据中的起始位置


length——这是要复制的数组元素数。

看看java中集合的基本实现。有许多库可用。其中一个好的实现是


我希望您可以使用原语集合节省空间和时间。

看看java中集合的原语实现。有许多库可用。其中一个好的实现是


我希望您可以使用基元集合节省空间和时间。

我认为您在System.arraycopy()中缺少一个参数?我认为您在System.arraycopy()中缺少一个参数?非常感谢您的帮助。您帮助过的银行我知道这是一个很老的版本,但希望人们仍能读到。他之所以要求使用手工编码的动态数组,而不是内置的数组列表/链接列表,是因为这是大多数编程类帮助我们了解更多内容所需要的。目前我在一个Java类中,我们不允许我们将使用数组列表或内置链接列表,取而代之的是,我们被鼓励构建自己的数组列表。这种实践教会了我很多关于Java和编程的知识。我知道这很古老,但希望人们仍能读到。他之所以要求使用手动编码的动态数组,而不是内置数组列表/链接列表,是因为大多数程序都是这样做的ing类需要帮助我们学习更多。目前我在一个Java类中,我们不允许使用数组列表或内置链接列表,而是鼓励我们自己构建。这种实践教会了我很多关于Java和编程的知识。