拆分字符串;然后比较值
Split string by ; then compare the values
我有一个字符串 returns 由 ;
分隔的一堆 ID。我将它们拆分以使它们各自的值传递给另一个实用程序以查找父 ID。然后我需要将父 ID 相互比较以确保所有 ID 都具有相同的值。该字符串可以包含一对多的 ID。示例:
String unitIdList = "3e46907f-c4e8-44d2-8cab-4abb5a191a72;9d242306-1c7c-4c95-afde-e1057af9d67c;2e96838f-f0df-4c82-b5bc-cb81a6bdb792;b21a4b19-6c1a-4e74-aa84-7900f6ffa7a8"
for ( String unitIds : unitIdList.split(";") ) {
parentId = UnitUtil.getInstance().getParentId(UUID.fromString(unitIds));
// now I need to compare parentIds. They should all be the same, but if not then do something else.
}
如何比较每个值?
您可以将它们全部放在一个 Set
中并检查大小是否为 1
:
String unitIdList = // ...
Set<String> distinctIds = new HashSet<>(Arrays.asList(unitIdList.split(";")));
if(distinctIds.size() == 1) {
// all the same ids
} else {
// not all the same!
}
您可以拆分(就像您已经拥有的那样),然后遍历每个项目,相互比较。
String unitIdList = "3e46907f-c4e8-44d2-8cab-4abb5a191a72;9d242306-1c7c-4c95-afde-e1057af9d67c;2e96838f-f0df-4c82-b5bc-cb81a6bdb792;b21a4b19-6c1a-4e74-aa84-7900f6ffa7a8";
String[] ids = unitIdList.split(";");
boolean allEqual = true;
for (String s1 : ids) {
for (String s2 : ids) {
allEqual = s1.equals(s2);
}
}
System.out.println("eq: " + allEqual);
if (allEqual) {
// ...
}
这绝不是优化。一旦 allEqual 为假,您就可以 break
跳出两个循环。
java-8 解决方案:
if (Stream.of(unitIdList.split(";")).distinct().count() == 1) {
// only one distinct ID
} else {
// more than one distinct IDs
}
我有一个字符串 returns 由 ;
分隔的一堆 ID。我将它们拆分以使它们各自的值传递给另一个实用程序以查找父 ID。然后我需要将父 ID 相互比较以确保所有 ID 都具有相同的值。该字符串可以包含一对多的 ID。示例:
String unitIdList = "3e46907f-c4e8-44d2-8cab-4abb5a191a72;9d242306-1c7c-4c95-afde-e1057af9d67c;2e96838f-f0df-4c82-b5bc-cb81a6bdb792;b21a4b19-6c1a-4e74-aa84-7900f6ffa7a8"
for ( String unitIds : unitIdList.split(";") ) {
parentId = UnitUtil.getInstance().getParentId(UUID.fromString(unitIds));
// now I need to compare parentIds. They should all be the same, but if not then do something else.
}
如何比较每个值?
您可以将它们全部放在一个 Set
中并检查大小是否为 1
:
String unitIdList = // ...
Set<String> distinctIds = new HashSet<>(Arrays.asList(unitIdList.split(";")));
if(distinctIds.size() == 1) {
// all the same ids
} else {
// not all the same!
}
您可以拆分(就像您已经拥有的那样),然后遍历每个项目,相互比较。
String unitIdList = "3e46907f-c4e8-44d2-8cab-4abb5a191a72;9d242306-1c7c-4c95-afde-e1057af9d67c;2e96838f-f0df-4c82-b5bc-cb81a6bdb792;b21a4b19-6c1a-4e74-aa84-7900f6ffa7a8";
String[] ids = unitIdList.split(";");
boolean allEqual = true;
for (String s1 : ids) {
for (String s2 : ids) {
allEqual = s1.equals(s2);
}
}
System.out.println("eq: " + allEqual);
if (allEqual) {
// ...
}
这绝不是优化。一旦 allEqual 为假,您就可以 break
跳出两个循环。
java-8 解决方案:
if (Stream.of(unitIdList.split(";")).distinct().count() == 1) {
// only one distinct ID
} else {
// more than one distinct IDs
}