Compare Java List Vectors










-1















I have two lists (Matches and Motifpoisitions). I want to combine the list in the following way: For all i such that i%2 = 1, look for Motifpoistions(k) = Matches(i) +1. And then set Matches(i)=Motifpostions(k+1). Additionally, I want to remove i and i-1 if k could not be found.



For example, If matches are (1,3,10,12) and Motifpositions is (4,8) then the final vector should be (1,8). Since 4 = 3+1, I replaced 3 with 8. And since there is no value in Motifpositions equal to 12+1, remove 10 and 12.
Here is what I am trying so far



for( int i = 1; i < matches.size(); i = i+2)
int motifmatched = 0;
for(int k = 0; k <motifpositions.size(); k++)
if(motifpositions.get(k) == matches.get(i)+1)
matches(i) = motifpositions(k+1);
motifmatched ++;


if(motifmatched ==0)
matches.remove(i);
matches.remove(i-1);











share|improve this question

















  • 3





    Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

    – MyStackRunnethOver
    Nov 14 '18 at 1:43











  • a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

    – Scary Wombat
    Nov 14 '18 at 1:48















-1















I have two lists (Matches and Motifpoisitions). I want to combine the list in the following way: For all i such that i%2 = 1, look for Motifpoistions(k) = Matches(i) +1. And then set Matches(i)=Motifpostions(k+1). Additionally, I want to remove i and i-1 if k could not be found.



For example, If matches are (1,3,10,12) and Motifpositions is (4,8) then the final vector should be (1,8). Since 4 = 3+1, I replaced 3 with 8. And since there is no value in Motifpositions equal to 12+1, remove 10 and 12.
Here is what I am trying so far



for( int i = 1; i < matches.size(); i = i+2)
int motifmatched = 0;
for(int k = 0; k <motifpositions.size(); k++)
if(motifpositions.get(k) == matches.get(i)+1)
matches(i) = motifpositions(k+1);
motifmatched ++;


if(motifmatched ==0)
matches.remove(i);
matches.remove(i-1);











share|improve this question

















  • 3





    Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

    – MyStackRunnethOver
    Nov 14 '18 at 1:43











  • a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

    – Scary Wombat
    Nov 14 '18 at 1:48













-1












-1








-1








I have two lists (Matches and Motifpoisitions). I want to combine the list in the following way: For all i such that i%2 = 1, look for Motifpoistions(k) = Matches(i) +1. And then set Matches(i)=Motifpostions(k+1). Additionally, I want to remove i and i-1 if k could not be found.



For example, If matches are (1,3,10,12) and Motifpositions is (4,8) then the final vector should be (1,8). Since 4 = 3+1, I replaced 3 with 8. And since there is no value in Motifpositions equal to 12+1, remove 10 and 12.
Here is what I am trying so far



for( int i = 1; i < matches.size(); i = i+2)
int motifmatched = 0;
for(int k = 0; k <motifpositions.size(); k++)
if(motifpositions.get(k) == matches.get(i)+1)
matches(i) = motifpositions(k+1);
motifmatched ++;


if(motifmatched ==0)
matches.remove(i);
matches.remove(i-1);











share|improve this question














I have two lists (Matches and Motifpoisitions). I want to combine the list in the following way: For all i such that i%2 = 1, look for Motifpoistions(k) = Matches(i) +1. And then set Matches(i)=Motifpostions(k+1). Additionally, I want to remove i and i-1 if k could not be found.



For example, If matches are (1,3,10,12) and Motifpositions is (4,8) then the final vector should be (1,8). Since 4 = 3+1, I replaced 3 with 8. And since there is no value in Motifpositions equal to 12+1, remove 10 and 12.
Here is what I am trying so far



for( int i = 1; i < matches.size(); i = i+2)
int motifmatched = 0;
for(int k = 0; k <motifpositions.size(); k++)
if(motifpositions.get(k) == matches.get(i)+1)
matches(i) = motifpositions(k+1);
motifmatched ++;


if(motifmatched ==0)
matches.remove(i);
matches.remove(i-1);








java list






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 1:40









STRSTR

164




164







  • 3





    Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

    – MyStackRunnethOver
    Nov 14 '18 at 1:43











  • a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

    – Scary Wombat
    Nov 14 '18 at 1:48












  • 3





    Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

    – MyStackRunnethOver
    Nov 14 '18 at 1:43











  • a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

    – Scary Wombat
    Nov 14 '18 at 1:48







3




3





Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

– MyStackRunnethOver
Nov 14 '18 at 1:43





Hi there, welcome to Stack Overflow. You've told us what you're trying to do, and provided your code so far, which is great! Please also tell us what's not working: what is your code doing incorrectly, or where is it erroring and what error is it throwing?

– MyStackRunnethOver
Nov 14 '18 at 1:43













a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

– Scary Wombat
Nov 14 '18 at 1:48





a) motifpositions(k+1); - don(t you need a get? b) same code will also cause out of bounds exception

– Scary Wombat
Nov 14 '18 at 1:48












1 Answer
1






active

oldest

votes


















0














Not sure why you've used nested loops.



Try this code, which prints [1, 8] as requested:-



List<Integer> matches = new LinkedList<>();
matches.add(1);
matches.add(3);
matches.add(10);
matches.add(12);

List<Integer> motifPositions = new LinkedList<>();
motifPositions.add(4);
motifPositions.add(8);

for (int i = 1; i < matches.size(); i += 2)
int indexOfSumInMotifpositions = motifPositions.indexOf(matches.get(i) + 1);
if (indexOfSumInMotifpositions > -1)
matches.set(i, motifPositions.get(indexOfSumInMotifpositions + 1));
else
matches.remove(i);
matches.remove(i - 1);


System.out.println(matches);





share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291968%2fcompare-java-list-vectors%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Not sure why you've used nested loops.



    Try this code, which prints [1, 8] as requested:-



    List<Integer> matches = new LinkedList<>();
    matches.add(1);
    matches.add(3);
    matches.add(10);
    matches.add(12);

    List<Integer> motifPositions = new LinkedList<>();
    motifPositions.add(4);
    motifPositions.add(8);

    for (int i = 1; i < matches.size(); i += 2)
    int indexOfSumInMotifpositions = motifPositions.indexOf(matches.get(i) + 1);
    if (indexOfSumInMotifpositions > -1)
    matches.set(i, motifPositions.get(indexOfSumInMotifpositions + 1));
    else
    matches.remove(i);
    matches.remove(i - 1);


    System.out.println(matches);





    share|improve this answer





























      0














      Not sure why you've used nested loops.



      Try this code, which prints [1, 8] as requested:-



      List<Integer> matches = new LinkedList<>();
      matches.add(1);
      matches.add(3);
      matches.add(10);
      matches.add(12);

      List<Integer> motifPositions = new LinkedList<>();
      motifPositions.add(4);
      motifPositions.add(8);

      for (int i = 1; i < matches.size(); i += 2)
      int indexOfSumInMotifpositions = motifPositions.indexOf(matches.get(i) + 1);
      if (indexOfSumInMotifpositions > -1)
      matches.set(i, motifPositions.get(indexOfSumInMotifpositions + 1));
      else
      matches.remove(i);
      matches.remove(i - 1);


      System.out.println(matches);





      share|improve this answer



























        0












        0








        0







        Not sure why you've used nested loops.



        Try this code, which prints [1, 8] as requested:-



        List<Integer> matches = new LinkedList<>();
        matches.add(1);
        matches.add(3);
        matches.add(10);
        matches.add(12);

        List<Integer> motifPositions = new LinkedList<>();
        motifPositions.add(4);
        motifPositions.add(8);

        for (int i = 1; i < matches.size(); i += 2)
        int indexOfSumInMotifpositions = motifPositions.indexOf(matches.get(i) + 1);
        if (indexOfSumInMotifpositions > -1)
        matches.set(i, motifPositions.get(indexOfSumInMotifpositions + 1));
        else
        matches.remove(i);
        matches.remove(i - 1);


        System.out.println(matches);





        share|improve this answer















        Not sure why you've used nested loops.



        Try this code, which prints [1, 8] as requested:-



        List<Integer> matches = new LinkedList<>();
        matches.add(1);
        matches.add(3);
        matches.add(10);
        matches.add(12);

        List<Integer> motifPositions = new LinkedList<>();
        motifPositions.add(4);
        motifPositions.add(8);

        for (int i = 1; i < matches.size(); i += 2)
        int indexOfSumInMotifpositions = motifPositions.indexOf(matches.get(i) + 1);
        if (indexOfSumInMotifpositions > -1)
        matches.set(i, motifPositions.get(indexOfSumInMotifpositions + 1));
        else
        matches.remove(i);
        matches.remove(i - 1);


        System.out.println(matches);






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 14 '18 at 3:20

























        answered Nov 14 '18 at 3:12









        KartikKartik

        3,20631435




        3,20631435



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291968%2fcompare-java-list-vectors%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            Barbados

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3