java - 使用 Arraylist 附加序列
问题描述
我遇到了这个问题:
考虑以下类:
public class MergeSequence{
private ArrayList<Integer> values;
public MergeSequence(){ values = new ArrayList<Integer>();}
public void add(int n) {values.add(n);}
public String toString() { return values.toString(); }
}
添加方法
public MergeSequence append(MergeSequence other)
创建一个新序列,附加这个和另一个序列,而不修改任何一个序列
例如,如果序列 (a) 是:1 4 9 16 并且 b 是序列 9 7 4 9 11,则调用 a.append(b) 返回序列 1 4 9 16 9 7 4 9 11 而不修改 a 或 b .
我不想要这个问题的答案,而是提示如何使用公共 MergeSequence 追加方法来做到这一点。任何建议都会有所帮助,因为我完全被难住了(我对 java 和编程很陌生)。
解决方案
除非您可以访问 MergeSequence 对象中包含的值,否则您无法真正做到这一点。当前没有定义允许您执行此操作的方法。甚至定义的toString()方法也不起作用,因为它返回一个空字符串,这没有用。
但是,假设您可以更改源代码以使值不再是private而是现在是public,您可以执行以下操作。
public class MergeSequence
{
public ArrayList<Integer> values; // This must be public
public MergeSequence(){ values = new ArrayList<Integer>();}
public void add(int n) {values.add(n);}
public String toString() { return values.toString(); }
public MergeSequence append(MergeSequence other)
{
MergeSequence result = new MergeSequence(); // Create a new result object.
// Iterate through the "local" ArrayList and add each value to the result
for (int i = 0; i < values.size(); i++)
{
int j = values.get(i);
result.add(j);
}
// Now, iterate through the "external" ArrayList and add each value to the result
for (int i = 0; i < other.values.size(); i++)
{
int j = other.values.get(i);
result.add(j);
}
// Then return the result. Neither source ArrayList is modified.
return result;
}
}
推荐阅读
- c - 将 _Generic 与其他宏结合
- google-bigquery - YouTube BigQuery 频道转移似乎并未导入所有视频
- arrays - 将指向数组的指针传递给函数有什么好处吗?
- facebook-opengraph - 使我的 FB 目录产品图像(微数据)与我的共享图像(og:image)不同
- java - Android Admob 奖励广告未显示奖励广告
- python - 在包含 savefig 的 for 循环中初始化 LSTM 权重(keras)时,SVD 未收敛
- excel - 在数字范围的范围内找到最小的数字范围
- python - Moviepy:混合多个音频文件
- sql - 如何使用 CASE WHEN 计算满足特定条件的不同用户的数量
- javascript - Json Parse for an Integer 作为 Javascript 中的键