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;
    }
}