簡體   English   中英

如何使用其他對象獲取單獨的 Arraylists 實例

[英]How to get separate Arraylists Instances with other object

在下面的代碼中,我想知道如何使用另一個對象。 具體來說,當我將它們傳遞到 append 方法時,如何讓兩個 ArrayLists 在其中具有不同的值。

下面的代碼應該將兩個 Arraylists 附加在一起而不修改它們中的任何一個。

我知道為了做到這一點,我需要創建一個單獨的 Arraylist“值”實例,這就是我使用另一個對象的原因,但我想知道如何為 Arraylist 的每個實例分配單獨的值

package com.company;

import java.util.ArrayList;

public class MergeSequence {


    public 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)
    {
        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);
        }

        result.toString();

        // Then return the result. Neither source ArrayList is modified.
        return result;
    }


}

toString本身不會向標准輸出輸出任何內容。 所以在調用result.toString(); 您不會在控制台中看到結果。 您需要使用System.out.println(result)來輸出結果。

順便說一下,在append方法中打印值是一個副作用。 最好在append之外打印值。 例如:


    public static void main(String[] args) {
        final MergeSequence a1 = new MergeSequence();
        a1.add(1);
        a1.add(2);
        final MergeSequence a2 = new MergeSequence();
        a2.add(3);

        final MergeSequence a3 = a1.append(a2);
        System.out.println(a1); // [1, 2]
        System.out.println(a2); // [3]
        System.out.println(a3); // [1, 2, 3]
    }

只需添加一個主要方法進行測試

    public static void main(String[] args) {
        MergeSequence m1 = new MergeSequence();
        m1.add(1);
        m1.add(2);

        MergeSequence m2 = new MergeSequence();
        m2.add(3);

        MergeSequence m3 = m1.append(m2);
        System.out.println(m3.toString());
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM