Java 用Arraylist追加序列
我有一个问题,我有麻烦: 考虑以下类别:Java 用Arraylist追加序列,java,Java,我有一个问题,我有麻烦: 考虑以下类别: 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 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(); }
}
这将创建一个新序列,附加此序列和其他序列,而不修改任何一个序列
例如,如果序列(a)为:1 4 9 16
b是序列974911
然后调用a.append(b)返回序列1 4 9 16 9 7 4 9 11,而不修改a或b
我不想知道这个问题的答案,而是想知道如何使用publicmergesequenceappend方法来实现这一点。任何建议都会很有帮助,因为我完全被难住了(我对java和编程基本上都是新手)。除非您可以访问MergeSequence对象中包含的值,否则无法真正做到这一点。当前没有定义允许您执行此操作的方法。即使是已定义的toString()方法也不能工作,因为它返回一个空字符串,这是没有用的 但是,假设您可以更改源代码,使值不再是私有的,而是现在是公共的,那么您可以执行以下操作
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;
}
}
公共类合并序列
{
public ArrayList value;//这必须是public
public MergeSequence(){values=new ArrayList();}
public void add(int n){values.add(n);}
公共字符串toString(){返回值。toString();}
公共合并序列附加(合并序列其他)
{
MergeSequence result=new MergeSequence();//创建一个新的结果对象。
//迭代“local”ArrayList并将每个值添加到结果中
对于(int i=0;i
如果您没有显示任何尝试,那就没什么帮助了。我想您首先必须意识到,既然您不能修改a或b,那么您必须为结果创建一个新的合并序列c。
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;
}
}