"时出现语法错误?-6ren"> "时出现语法错误?-我正在尝试编写我自己的 C++ STL vector 版本<>我希望它能够创建一个动态增长和收缩的列表...我想要有用于 push_back、push_front、pop_back、pop_front-6ren">
gpt4 book ai didi

java - 在Java中使用 "DynaArray"时出现语法错误?

转载 作者:行者123 更新时间:2023-12-02 07:48:25 24 4
gpt4 key购买 nike

我正在尝试编写我自己的 C++ STL vector 版本<>我希望它能够创建一个动态增长和收缩的列表...我想要有用于 push_back、push_front、pop_back、pop_front、remove、removeAt 的方法,清晰,大小...我写的所有这些都没有什么问题,并且没有收到任何构建错误或警告,当我尝试实例化该类时,Eclipse 告诉我它在标记后寻找维度...所以它认为我的任何类型发送想要成为该类型的数组,例如......

    DynaArray<int> Bob;

这里需要在 int 之后添加 [] 运算符。

这是我的类(class)目前的样子

    public class DynaArray<T>
{
int Size = 0;
int CurrentCount = 0;
int LastSpot = 0;
T[] Array;

DynaArray(int _size)
{
Size = _size;
}

@SuppressWarnings("unchecked")
void push_back(T _element)
{
CurrentCount++;
if(CurrentCount > Size)
{
//make a new array for double the size;
if( Size == 0 )
{
Size = 2;
Array = (T[]) new Object[Size];
}
else
{
int OldSize = Size;
Size = Size*2;
T[] TempArray;
TempArray = (T[]) new Object[Size];
int i = 0;
for( ; i < OldSize; i++ )
{
//Copy over info from Array to TempArray
TempArray[i] = Array[i];
}
Array = TempArray;
}
}

//Now add the new element onto the array
Array[LastSpot] = _element;
LastSpot++;

}

@SuppressWarnings("unchecked")
void push_front(T _element)
{
CurrentCount++;
if( Size == 0)
{
Size = 2;
Array = (T[]) new Object[Size];
Array[0] = _element;
return;
}
else
{
int OldSize = Size;
Size = Size+1;
T[] TempArray;
TempArray = (T[]) new Object[Size];
int i = 1;
for( ; i < OldSize; i++ )
{
//Copy over info from Array to TempArray
TempArray[i] = Array[i-1];
Array = TempArray;
Array[0] = _element;
}
}

}

T pop_back()
{
if( CurrentCount <= 0)
return null;
else
{
return Array[CurrentCount-1];
}

}

T pop_front()
{
if( CurrentCount <= 0)
return null;
else
{
return Array[0];
}
}

int size()
{
return CurrentCount;
}

@SuppressWarnings("unchecked")
void clear()
{
Size = 0;
CurrentCount = 0;
LastSpot = 0;
Array = (T[]) new Object[2];

}

@SuppressWarnings("unchecked")
void removeAt(int index)
{
T[] TempArray = (T[]) new Object[Size];
int ArrayIndex = 0;
for( int i = 0; i < CurrentCount; i++)
{
if( i == index )
continue;

TempArray[ArrayIndex] = Array[i];
ArrayIndex++;

}
}

void remove(T _element)
{
for(int i = 0; i < CurrentCount; i++)
{
//look for the element
if( Array[i] == _element)
removeAt(i);
}
}


}

感谢您提供的任何帮助,或者如果我的代码以某种方式帮助您,欢迎

最佳答案

int是一个原语,因此 cannot be used with Java generics 。这样做的原因是maintain the bytecode's backwards compatibility (这在第一次引入泛型时很重要)。您必须使用 Integer 相反。

注意除非您将此作为学术练习,否则您可以/应该只使用 List<T> 而不是您自定义实现的类。

或者:使用 Trove.

关于java - 在Java中使用 "DynaArray<int>"时出现语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10539982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com