-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8
-
generic
-
generic
ADDITIONAL SYSTEM INFORMATION :
win10 / centos7.9
A DESCRIPTION OF THE PROBLEM :
use "list.stream().distinct().map()" ,
when I change the element value in "map()",the "distinct()" lapsed.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Look at the Test code comment "TODO here !!" ----> ssc.setChangeFlag(1);
If I comment out the code, return 5 element.
else if I use the code, return size 4 element.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I should get 4 element of the new list theoretically.
ACTUAL -
But it return 5.
---------- BEGIN SOURCE ----------
public class Test55 {
public static void main(String[] args) {
List<SnStateChanged> snStateChangedList = new ArrayList<>();
SnStateChanged ssc1 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
SnStateChanged ssc2 = SnStateChanged.builder().sn("2a").snChannel("2c").snVersion("2v").snYear("2y").count(2).build();
SnStateChanged ssc3 = SnStateChanged.builder().sn("3a").snChannel("3c").snVersion("3v").snYear("3y").count(3).build();
SnStateChanged ssc4 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
SnStateChanged ssc5 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1vv").snYear("1yy").count(1).build();
snStateChangedList.add(ssc1);
snStateChangedList.add(ssc2);
snStateChangedList.add(ssc3);
snStateChangedList.add(ssc4);
snStateChangedList.add(ssc5);
/** distinct + map */
List<SnStateChanged> list = snStateChangedList.stream().distinct().map(ssc -> {
// TODO here !!
ssc.setChangeFlag(1);
System.out.println(ssc);
return ssc;
}).collect(Collectors.toList());
System.out.println(">>>>end>>>>");
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SnStateChanged {
private Long id;
private String sn;
private Integer state;
private Timestamp changeTime;
private Integer count;
private Integer activated;
private Integer unbinding;
private String snChannel;
private String snVersion;
private String snYear;
private int changeFlag;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
split to double stream list, use ".collect(Collectors.toList())".
distinct list & map list.
FREQUENCY : always
win10 / centos7.9
A DESCRIPTION OF THE PROBLEM :
use "list.stream().distinct().map()" ,
when I change the element value in "map()",the "distinct()" lapsed.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Look at the Test code comment "TODO here !!" ----> ssc.setChangeFlag(1);
If I comment out the code, return 5 element.
else if I use the code, return size 4 element.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I should get 4 element of the new list theoretically.
ACTUAL -
But it return 5.
---------- BEGIN SOURCE ----------
public class Test55 {
public static void main(String[] args) {
List<SnStateChanged> snStateChangedList = new ArrayList<>();
SnStateChanged ssc1 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
SnStateChanged ssc2 = SnStateChanged.builder().sn("2a").snChannel("2c").snVersion("2v").snYear("2y").count(2).build();
SnStateChanged ssc3 = SnStateChanged.builder().sn("3a").snChannel("3c").snVersion("3v").snYear("3y").count(3).build();
SnStateChanged ssc4 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1v").snYear("1y").count(1).build();
SnStateChanged ssc5 = SnStateChanged.builder().sn("1a").snChannel("1c").snVersion("1vv").snYear("1yy").count(1).build();
snStateChangedList.add(ssc1);
snStateChangedList.add(ssc2);
snStateChangedList.add(ssc3);
snStateChangedList.add(ssc4);
snStateChangedList.add(ssc5);
/** distinct + map */
List<SnStateChanged> list = snStateChangedList.stream().distinct().map(ssc -> {
// TODO here !!
ssc.setChangeFlag(1);
System.out.println(ssc);
return ssc;
}).collect(Collectors.toList());
System.out.println(">>>>end>>>>");
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SnStateChanged {
private Long id;
private String sn;
private Integer state;
private Timestamp changeTime;
private Integer count;
private Integer activated;
private Integer unbinding;
private String snChannel;
private String snVersion;
private String snYear;
private int changeFlag;
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
split to double stream list, use ".collect(Collectors.toList())".
distinct list & map list.
FREQUENCY : always
- duplicates
-
JDK-8312890 HashSet removeAll not removing elements even both the sets having same values.
-
- Closed
-