Hi All, I have list with duplicate value … I want a logic to return only c1 in Java/Groovy
List<String> windowsID = new ArrayList<>();
windowsID.add("a1");
windowsID.add("b1");
windowsID.add("c1");
windowsID.add("a1");
windowsID.add("b1");
Hi All, I have list with duplicate value … I want a logic to return only c1 in Java/Groovy
List<String> windowsID = new ArrayList<>();
windowsID.add("a1");
windowsID.add("b1");
windowsID.add("c1");
windowsID.add("a1");
windowsID.add("b1");
@discover.selenium
You could use:
for (int cnt = 0; cnt < windowsID.size();cnt++)
{
if (windowsID.count(windowsID[cnt])==1)
{
WebUI.comment(windowsID[cnt].toString() + " has only one")
}
}
This does not make sense to me. Do you want a collection without any duplication? Then you should use java.util.Set
rather than java.util.List
.
Set<String> windowsID = new HashSet<>();
windowsID.add("a1");
windowsID.add("b1");
windowsID.add("c1");
windowsID.add("a1");
windowsID.add("b1");
for (item in windowsID) {
println item
}
this will give you:
b1
c1
a1
Duplications will be avoided.
How about this?
import java.util.stream.Collectors
List<String> windowIDs = new ArrayList()
windowIDs.add("a1");
windowIDs.add("b1");
windowIDs.add("c1");
windowIDs.add("a1");
windowIDs.add("b1");
Set<String> distinct = new HashSet<>(windowIDs)
List<String> valuesThatAppearOnlyOnce =
distinct.stream().filter { id ->
Collections.frequency(windowIDs, id) == 1
}.collect(Collectors.toList())
println valuesThatAppearOnlyOnce
This would show the following in the Console
[c1]
Thanks … @grylion54 @kazurayam