java - 将一个列表中的项目添加到java中的另一个列表中

标签 java android arraylist

我有两个数组列表

ArrayList<BaseItem> normal;
ArrayList<BaseItem> highlighted;

normal = new ArrayList<BaseItem>();
highlighted = new ArrayList<BaseItem>();

我正在做的是迭代第三个列表(称为 MyItems),并将其中称为突出显示和正常的项目添加到上面的两个列表中,如下所示。

  for (Iterator<BaseItem> iterator = MyItems.iterator(); iterator.hasNext();) {
        BaseItem itemtype = iterator.next();
        if (itemtype.isHighlight()) {
            highlighted.add(itemtype);

        }
        else{
            normal.add(itemtype);

        }

    } 

所以我的问题是我想将突出显示列表的每第 5 个和第 6 个项目添加到名为普通的列表中。即元素,如 5,6,11,12,17,18 等

我还想将正常列表的每第 6 个和第 7 个项目添加到突出显示列表中,即 6、7、13、14 等。

所以现在我的突出显示和正常列表将包含这样的项目

 Highlighted -> highlighted1,highlighted2,highlighted3,highlighted4,normal6,normal7 highlighted7,highlighted8.highlighted9,highlighted10,normal13,normal14 and so on

 Normal ->  Noraml1,normal2,normal3,normal4,normal5,highlighted5,highlighted6,normal7,normal8,normal9,normal10,normal11,normal12,highlighted11,highlighted12 and so on

任何帮助我们都会感激不尽,

谢谢

最佳答案

如果我理解,在 5 和 6 之后插入列表时使用计数器,添加到普通列表而不是突出显示列表中

试试这个:

int highAdded = 0;
int normalAdded = 0;
for (Iterator<BaseItem> iterator = MyItems.iterator(); iterator.hasNext();) {
    BaseItem itemtype = iterator.next();
    if (itemtype.isHighlight()) {
        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);
        }
    }

} 

编辑

我写了这段代码:

public class StackOverFlowSample {
    public static void main(String [] args) {

        List<String> lst = new ArrayList<String>();

        List<String> lstHigh = new ArrayList<String>();
        List<String> lstNormal = new ArrayList<String>();

        lst.add("highlighted01");
        lst.add("highlighted02");
        lst.add("highlighted03");
        lst.add("highlighted04");
        lst.add("highlighted05");
        lst.add("highlighted06");
        lst.add("highlighted07");
        lst.add("highlighted08");
        lst.add("highlighted09");
        lst.add("highlighted10");
        lst.add("highlighted11");
        lst.add("highlighted12");
        lst.add("highlighted13");
        lst.add("highlighted14");
        lst.add("highlighted15");
        lst.add("highlighted16");

        lst.add("normal01");
        lst.add("normal02");
        lst.add("normal03");
        lst.add("normal04");
        lst.add("normal05");
        lst.add("normal06");
        lst.add("normal07");
        lst.add("normal08");
        lst.add("normal09");
        lst.add("normal10");
        lst.add("normal11");
        lst.add("normal12");
        lst.add("normal13");
        lst.add("normal14");
        lst.add("normal15");
        lst.add("normal16");

        int highAdded = 0;
        int normalAdded = 0;
        for (Iterator<String> iterator = lst.iterator(); iterator.hasNext();) {
            String itemtype = iterator.next();
            if (itemtype.startsWith("highlighted")) {
                highAdded++;
                if (highAdded == 5) {
                    lstNormal.add(itemtype);
                } else if (highAdded == 6) {
                    lstNormal.add(itemtype);
                    highAdded = 0;
                } else {
                   lstHigh.add(itemtype);
                }
            }
            else{
                normalAdded++;
                if (normalAdded == 6) {
                    lstHigh.add(itemtype);
                } else if (normalAdded == 7) {
                    lstHigh.add(itemtype);
                    normalAdded = 0;
                } else {
                   lstNormal.add(itemtype);
                }
            }
        } 

        String result = "HIGHLIGHTED ARRAY: ";
        for (String curr : lstHigh) {
            result += curr + ", ";
        }
        System.out.print(result);

        result = "NORMAL ARRAY: ";
        for (String curr : lstNormal) {
            result += curr + ", ";
        }
        System.out.print(result);
    }
}

输出为:

HIGHLIGHTED ARRAY: highlighted01, highlighted02, highlighted03, highlighted04, highlighted07, highlighted08, highlighted09, highlighted10, highlighted13, highlighted14, highlighted15, highlighted16, normal06, normal07, normal13, normal14,

NORMAL ARRAY: highlighted05, highlighted06, highlighted11, highlighted12, normal01, normal02, normal03, normal04, normal05, normal08, normal09, normal10, normal11, normal12, normal15, normal16, 

告诉我是否可以;)

关于java - 将一个列表中的项目添加到java中的另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764871/

相关文章:

android - SAX RSS 提要解析器

Java:我可以有一个具有 3 个数组列表作为其值的 Map 吗?

java - 如何找到arrayList中的第n个索引

java - 如何使 Jersey Rest POST 请求同步

RelativeLayout 中的 Android 定位 View

Java.util.zip 添加新文件会覆盖整个 jar 吗?

android - 两个TextView并排,只有一个椭圆?

android - 从文件夹内的音频文件填充自定义 ListView

java - 在每次访问应用程序时使用 SharedPreferences 将数据附加到数组中

java - 监视特定方法中的 Java 对象分配/释放