简体   繁体   中英

Add the items from one list to another list in java

I have two arraylists say

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

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

what I am doing is I am Iterating through a 3rd list(called MyItems) and adding the items in it called highlight and normal to the above two lists like this.

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

        }
        else{
            normal.add(itemtype);

        }

    } 

So my question is I want to add every 5th and 6th item of the highlited list to the list called normal .ie elements like 5,6,11,12,17,18 and so on

and also I want to add every 6th and 7th item of normal list to highlighted list ie 6,7,13,14 and so on.

so now my highlighted and normal lists will contain the items like this

 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

Any help is always appreciated,

Thanks

If I understand, use a counter when after 5 and 6 insert in your list, add in normal list instead of highlighted list

Try this:

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

} 

EDIT

I write this code:

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

The output is:

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, 

Tell me if it's OK ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM