removing duplicates that are next to each other
up vote
0
down vote
favorite
I have a list:private static List<Point> pointList = new ArrayList<>();
.
Point
= object representing a point in 3D graph.
I can compare Points with method:
@Override
public boolean equals(Object o)
if (this == o)
return true;
if (o == null
Lets say my list looks like that: a1, a2, b1, a3, c1, c2, a4
All objects are different objects (a1 =/= a2..), but have same values ( a1, a2... representing exact same point on graph)
What I want is to remove duplicated Points
that are next to each other on list, so list would look like that a, b, a, c, a
I tried:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
for (int i = 0; i < pointList.size()-1; i++)
if (pointList.get(i).equals(pointList.get(i + 1)))
l.add(pointList.get(i));
return l;
But I'm missing elements.
java list object duplicates
add a comment |
up vote
0
down vote
favorite
I have a list:private static List<Point> pointList = new ArrayList<>();
.
Point
= object representing a point in 3D graph.
I can compare Points with method:
@Override
public boolean equals(Object o)
if (this == o)
return true;
if (o == null
Lets say my list looks like that: a1, a2, b1, a3, c1, c2, a4
All objects are different objects (a1 =/= a2..), but have same values ( a1, a2... representing exact same point on graph)
What I want is to remove duplicated Points
that are next to each other on list, so list would look like that a, b, a, c, a
I tried:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
for (int i = 0; i < pointList.size()-1; i++)
if (pointList.get(i).equals(pointList.get(i + 1)))
l.add(pointList.get(i));
return l;
But I'm missing elements.
java list object duplicates
1
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a list:private static List<Point> pointList = new ArrayList<>();
.
Point
= object representing a point in 3D graph.
I can compare Points with method:
@Override
public boolean equals(Object o)
if (this == o)
return true;
if (o == null
Lets say my list looks like that: a1, a2, b1, a3, c1, c2, a4
All objects are different objects (a1 =/= a2..), but have same values ( a1, a2... representing exact same point on graph)
What I want is to remove duplicated Points
that are next to each other on list, so list would look like that a, b, a, c, a
I tried:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
for (int i = 0; i < pointList.size()-1; i++)
if (pointList.get(i).equals(pointList.get(i + 1)))
l.add(pointList.get(i));
return l;
But I'm missing elements.
java list object duplicates
I have a list:private static List<Point> pointList = new ArrayList<>();
.
Point
= object representing a point in 3D graph.
I can compare Points with method:
@Override
public boolean equals(Object o)
if (this == o)
return true;
if (o == null
Lets say my list looks like that: a1, a2, b1, a3, c1, c2, a4
All objects are different objects (a1 =/= a2..), but have same values ( a1, a2... representing exact same point on graph)
What I want is to remove duplicated Points
that are next to each other on list, so list would look like that a, b, a, c, a
I tried:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
for (int i = 0; i < pointList.size()-1; i++)
if (pointList.get(i).equals(pointList.get(i + 1)))
l.add(pointList.get(i));
return l;
But I'm missing elements.
java list object duplicates
java list object duplicates
asked Nov 11 at 14:54
Taknie
447
447
1
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58
add a comment |
1
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58
1
1
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
You basically need to keep reference to the last added object. If the object that you are currently trying to add is the same, then you should skip it.
Here is how it would look like using your code:
public List<Point> getUniq()
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++)
if (!points.get(i).equals(lastAdded)) // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
return result;
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
add a comment |
up vote
0
down vote
Your code does not seem to do what you want according to your description.
What I want is to remove duplicated Points that are next to each other
on list, so list would look like that a, b, a, c, a
The following piece of code should do the work:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++)
if (!l.get(l.size()-1).equals(pointList.get(i)))
l.add(pointList.get(i));
return l;
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
You basically need to keep reference to the last added object. If the object that you are currently trying to add is the same, then you should skip it.
Here is how it would look like using your code:
public List<Point> getUniq()
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++)
if (!points.get(i).equals(lastAdded)) // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
return result;
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
add a comment |
up vote
1
down vote
accepted
You basically need to keep reference to the last added object. If the object that you are currently trying to add is the same, then you should skip it.
Here is how it would look like using your code:
public List<Point> getUniq()
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++)
if (!points.get(i).equals(lastAdded)) // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
return result;
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
You basically need to keep reference to the last added object. If the object that you are currently trying to add is the same, then you should skip it.
Here is how it would look like using your code:
public List<Point> getUniq()
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++)
if (!points.get(i).equals(lastAdded)) // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
return result;
You basically need to keep reference to the last added object. If the object that you are currently trying to add is the same, then you should skip it.
Here is how it would look like using your code:
public List<Point> getUniq()
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++)
if (!points.get(i).equals(lastAdded)) // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
return result;
answered Nov 11 at 15:00
pwolaq
5,2101138
5,2101138
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
add a comment |
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
This is what I needed, thanks!
– Taknie
Nov 11 at 15:03
add a comment |
up vote
0
down vote
Your code does not seem to do what you want according to your description.
What I want is to remove duplicated Points that are next to each other
on list, so list would look like that a, b, a, c, a
The following piece of code should do the work:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++)
if (!l.get(l.size()-1).equals(pointList.get(i)))
l.add(pointList.get(i));
return l;
add a comment |
up vote
0
down vote
Your code does not seem to do what you want according to your description.
What I want is to remove duplicated Points that are next to each other
on list, so list would look like that a, b, a, c, a
The following piece of code should do the work:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++)
if (!l.get(l.size()-1).equals(pointList.get(i)))
l.add(pointList.get(i));
return l;
add a comment |
up vote
0
down vote
up vote
0
down vote
Your code does not seem to do what you want according to your description.
What I want is to remove duplicated Points that are next to each other
on list, so list would look like that a, b, a, c, a
The following piece of code should do the work:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++)
if (!l.get(l.size()-1).equals(pointList.get(i)))
l.add(pointList.get(i));
return l;
Your code does not seem to do what you want according to your description.
What I want is to remove duplicated Points that are next to each other
on list, so list would look like that a, b, a, c, a
The following piece of code should do the work:
public List<Point> getUniq()
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++)
if (!l.get(l.size()-1).equals(pointList.get(i)))
l.add(pointList.get(i));
return l;
answered Nov 11 at 15:07
NickAth
177112
177112
add a comment |
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249916%2fremoving-duplicates-that-are-next-to-each-other%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
1
Read your code: you only add a point if an equal point follows it. That's not what you want to do. You want to add the current point to the new list if the last element you added to the list (if any) is different from the current point.
– JB Nizet
Nov 11 at 14:58