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