我正在做一个项目,但是我不能使用任何现有的Java数据结构(即ArraysList,树等)
我只能使用数组。因此,我需要用新的内存动态更新数组。
我正在从一个文本文件中读取数据,并且为数组内存预分配了100:
String [] wordList;
int wordCount = 0;
int occurrence = 1;
int arraySize = 100;
wordList = new String[arraySize];
while ((strLine = br.readLine()) != null) {
// Store the content into an array
Scanner s = new Scanner(strLine);
while(s.hasNext()) {
wordList[wordCount] = s.next();
wordCount++;
}
}
现在,此功能适用于100个以下列表项。br.readline是经过缓冲的阅读器,它遍历文本文件的每一行。然后,我将每个单词存储到列表中,然后增加索引(wordCount)。
但是,一旦我的文本文件包含100多个项目,就会收到分配错误。
如何动态更新此数组(从而重新发明轮子)?
谢谢!
您可以执行以下操作:
String [] wordList;
int wordCount = 0;
int occurrence = 1;
int arraySize = 100;
int arrayGrowth = 50;
wordList = new String[arraySize];
while ((strLine = br.readLine()) != null) {
// Store the content into an array
Scanner s = new Scanner(strLine);
while(s.hasNext()) {
if (wordList.length == wordCount) {
// expand list
wordList = Arrays.copyOf(wordList, wordList.length + arrayGrowth);
}
wordList[wordCount] = s.next();
wordCount++;
}
}
使用java.util.Arrays.copyOf(String[])
基本上与执行以下操作:
if (wordList.length == wordCount) {
String[] temp = new String[wordList.length + arrayGrowth];
System.arraycopy(wordList, 0, temp, 0, wordList.length);
wordList = temp;
}
除了它是一行代码而不是三行代码。:)
为了便于示例,让我们定义一个玩具自动机类型: 这种结构被设计成通过循环,我们可以将每个想象成一个具有成功和失败转换到其他状态的状态。因此有限自动机必须递归定义。例如,这里是最简单的自动机: 它由1个总是过渡到自身的状态组成。如果我们愿意,我们可以制造更复杂的自动机: 这些不错。但是接受用户输入并构建一个自动机可能会很好。例如,也许可以从过渡矩阵中构建一个。这里有一个天真的实现: 然而,当我们尝试这
问题内容: 我想知道在React / React- Native中部分更新组件状态的最佳方法是什么。除了我可以使函数获取当前状态并创建新状态并合并新的{key:value}和先前状态的事实。例如: 我想将last_name更新为另一个值。当我调用时 ,它将formData词典重置为姓:new Value。有办法有效地做到这一点吗? 问题答案: 我认为您可以尝试两种方法: 点差运算符 如此 要么 获
我尝试过创建循环,比如减去用户想要购买的物品的数量,同时计算取值时的模数为0,减去用户购买的数量,但我离它还很远。 数组来自其他方法: 是商品的价格是用户购买的商品数量是用户对折扣的选择,例如,用户可以将折扣设置为2包、3包甚至无。
问题内容: 我有一个快速的问题。我在java中有一个整数数组,需要它的长度在整个类中变化。具体来说,在某些情况下,我需要将其增加一。我这样尝试过。 我会在需要时增加整数变量numberOfSBG,但我认为这不起作用。还有其他办法吗? 问题答案: 我建议您使用ArrayList,因为您不必担心长度。创建后,您将无法修改数组大小: 数组是一个包含固定数量的单一类型值的容器对象。创建数组时将确定数组的长
在V9.0.0版本之前为下列对象分配内存采用动态的方式,在之后的版本才允许应用程序开发者自己静态的分配内存; 任务 软件定时器 队列 事件组 二值信号量 计数信号量 递归信号量 互斥量 当然,具体使用静态分配还是动态分配由开发者自己决定。 动态分配 动态分配的好处在于使用灵活简单、同时潜在的可以降低内存占用。 更少的函数参数 内存分配使用RTOS提供的API自动分配 应用程序开发者不需要自己去考虑
我有以下问题: 示例: 输入:[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15]输出:6顺序:[0,2,6,9,13,15]或[0,4,6,9,11,15]或[0,4,6,9,11,15] 这是一个DP问题,我确实有一些问题在记忆步骤。下面是我的代码: 多谢了。