gpt4 book ai didi

java - 从一个列表中删除项目并将其添加到另一个列表中的指定索引处

转载 作者:行者123 更新时间:2023-12-01 22:05:04 25 4
gpt4 key购买 nike

我有两个ArrayList:

ArrayList a = [1,2,3,4,5,6,7,8,9,10,11.......100]
ArrayList b = [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10.......a100]

删除 ArrayList a 的每第 5 个和第 6 个元素,例如 5,6 11,12 等等,并添加到 ArrayList b。

并且还删除 ArrayList b 的每第 6 个和第 7 个项目(如 a6、a7、a13、a14 等)并将其添加到 ArrayList a。

所以我的输出 ArrayList 是这样的。

 ArrayList a = [1,2,3,4,a6,a7,7,8,9,10,a13,a14,13,14,15,16,a20,a21 and so on]
ArrayList b = [a1,a2,a3,a4,a5,5,6,a8,a9,a10,a11,a12,11,12 ,a15,a16,a17,a18,a19,17,18and so on]

那么我怎样才能实现这个目标呢?

我尝试过,但不是以确切的方式。

       int highAdded = 0;
int normalAdded = 0;
for (Iterator<BaseItem> iterator = mItems.iterator(); iterator.hasNext(); ) {
BaseItem itemtype = iterator.next();
if (itemtype.isHighlightPost()) {

highAdded++;
if (highAdded == 5) {
normal.add(itemtype);
} else if (highAdded == 6) {
normal.add(itemtype);
highAdded = 0;
} else {
highlighted.add(itemtype);
}
} else {
normalAdded++;
if (normalAdded == 6) {
highlighted.add(itemtype);
} else if (normalAdded == 7) {
highlighted.add(itemtype);
normalAdded = 0;
} else {
normal.add(itemtype);
}
}

}

谢谢

最佳答案

这应该可以完成工作,请注意,这里没有删除,但它确实进行了替换。确保设置 N,以免超出列表大小。

/** Multiplier for a-list index */
private final static int M_A = 6;
/** Multiplier for b-list index */
private final static int M_B = 7;

{
// ...
final int n = Math.min( a.size() / M_A, b.size() / M_B );
for ( int i = 1; i <= n; i++ ) {
exchange( a, b, i * M_A - 2, i * M_B - 2 );
exchange( a, b, i * M_A - 1, i * M_B - 1 );
}
// ...
}

private <T> void exchange( List<T> a, List<T> b, int aIndex, int bIndex ) {
T elem1 = a.get( aIndex );
a.set( aIndex, b.get( bIndex ) );
b.set( bIndex, elem1 );
}

(编辑以匹配索引计数器的“规范”)(编辑2,还添加了n的计算)

关于java - 从一个列表中删除项目并将其添加到另一个列表中的指定索引处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com