Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中复制列表中的项目_Java_List - Fatal编程技术网

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

如何在java中复制列表中的项目,java,list,Java,List,我有一个日期列表,我希望能够用X来复制它们,特别是如果我的列表是a,B,C和X=3,我希望它是a,a,a,B,B,C,C,我试着通过循环来实现这一点,但首先列表的大小一直在增长,然后随着列表的不断增长,再次将项目放入正确的索引中。有人能帮我吗?我用C编写了解决方案,因为我在这台计算机上没有Java IDE,但这与Java有很大不同。逻辑(和大部分代码)是相同的。试试这个: public static List<string> createList(List<string>

我有一个日期列表,我希望能够用X来复制它们,特别是如果我的列表是a,B,C和X=3,我希望它是a,a,a,B,B,C,C,我试着通过循环来实现这一点,但首先列表的大小一直在增长,然后随着列表的不断增长,再次将项目放入正确的索引中。有人能帮我吗?

我用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;
}
公共静态列表createList(ListoriginalList,int x)
{
List newList=新列表();
foreach(原始列表中的字符串s)
{

对于(int i=0;i对于类似的事情,通过看而不是听解释来学习可能更容易,所以这里有一些简单的工作代码:

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

.

您需要一个linkedlist才能添加到其中。使用此程序可实现此功能

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

        }

    }

}
import java.util.LinkedList;
公共类LinkedListExample{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
LinkedList al=新建LinkedList();
al.添加(“A”);
al.添加(“B”);
al.添加(“C”);
修饰(al,4);
系统输出打印项次(al);
}
私有静态无效修改(LinkedList al,int X){
int size=al.size();

对于(int j=0;js听起来你不需要修改你的起始列表,而是为你的结果制作一个新的列表。创建一个新列表,每个项目将被填充X次。然后要么返回该列表,要么清除旧列表,并用新列表替换其内容。这太棒了,非常感谢,所以我试图保留它,这是对我自己的打击原文list@martinseal1987没错-有一些算法很容易实现-这只是碰巧不是其中之一。这看起来是可行的,但我将给出以下解决方案的要点,因为它是java的。非常感谢您的快速回复。您不需要
LinkedList
,当您使用此方法时,任何列表都可以h、 虽然
LinkedList
有一个您没有提到的优点。您可能需要添加一些解释-现在还不清楚像
al.add(X*j,al.get(X*j))这样的行是什么
do。最后,清理代码可能是一个好主意-你混合了大括号样式,并且有一个随机的注释。我的朋友,我使用了链表,因为他希望在同一个列表中进行修改,而不是要求创建新的列表。建议在链表之间插入,而不是任何其他列表。我的目标是使用同一个列表来取得结果。如果你不确定原因,请不要否决投票。
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));
            }

        }

    }

}