如何在java中复制列表中的项目

时间:2017-12-30 17:37:15

标签: java list

我有一个日期ID列表,以便能够通过X复制它们,所以特别是如果我的列表读取A,B,C和X = 3 id就像它读取A,A,A,B,B,B ,C,C,C我试过这样做是通过一个循环,但是首先卡在列表大小总是增长,然后再将项目放在正确的索引中,因为列表不断增长,任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

我在C#中编写了解决方案,因为我在这台计算机上没有Java IDE,但它只有一个不同于Java的头发。逻辑(和大多数代码)是相同的。试试这个:

public static List<string> createList(List<string>originalList, int x)
{
    List<string> newList = new List<string>();
    foreach(string s in originalList)
    {
        for(int i=0; i<x; i++)
        {
            newList.Add(s);
        }
    }
    return newList;
}

答案 1 :(得分:1)

对于这样的事情,通过观察而不是通过听取有关做什么的解释来学习它可能更容易,所以这里有一些简单的工作代码:

public List<Date> repeat(List<Date> dates, int times)
{
    List<Date> results = new ArrayList<>();
    for (Date d : dates)
    {
        for (int i = 0; i < times; ++i)
            results.add(d.clone());
    }
    return results;
}

我们制作新的&#34;结果&#34;我们通过迭代输入列表来构建的列表 - 对于输入列表中的每个项目,我们将该项目多次添加到结果列表中。这使得算法比尝试在同一列表中复制项目简单得多!

请注意,我们每次都会克隆日期 - 否则我们最终会得到一个包含所有指向同一实际Date对象的元素序列的列表 - 在大多数情况下并不理想。

您可以使用泛型来使此方法更具可重用性 - 理想情况下,我们希望此方法适用于所有Cloneable个对象,而不仅仅是Date s:

public static <T extends Cloneable> List<T> repeat(List<T> in, int times)
{
    List<T> results = new ArrayList<>();
    for (T x : in)
    {
        for (int i = 0; i < times; ++i)
            results.add(x);
    }
    return results;
}

Code demo (generics version)

答案 2 :(得分:-1)

您需要添加一个链接列表。使用此程序来实现功能。

import java.util.LinkedList;

public class LinkedListExample {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LinkedList<String> al=new LinkedList<>();
        al.add("A");
        al.add("B");
        al.add("C");
        modify(al,4);

        System.out.println(al);
    }

    private static void modify(LinkedList<String> al, int X) {
        int size=al.size();
        for(int j=0;j<size;j++)
        {
            for(int i=1;i<X;i++)
            {
                al.add(X*j, al.get(X*j));
            }

        }

    }

}