我有以下课程:
class A {
String s;
}
以下class A
个对象列表列表:
[{1s, 3f, 46h}, {333s, 67b, 1d, 67m, 67h}, {3a, 3x}, {34n, 22o, 34s},
{40f, 22x, 4m}... and so on]
我只需要遍历此列表,获取结果并推送到另一个输出arrayList。现在将包含在结果arrayList中的内容:
1. Just skip those elements from the above input arrayList
which have more than one String with same prefix(only the last character
is the suffix here which will always be a single character alphabet; not digit).
For example: from the above input arrayList the first element({1s, 3f, 46h})
won't be skipped and will be pushed into the output arrayList
as it doesn't have any String with the same prefix; as 1, 3 and 46 are different.
But 2nd, 3rd and 4th elements will be skipped as they have matches
(three prefixes with same 67 in 2nd element, two prefixes with same 3 in 3rd element
and two prefixes with same 34 in 4th element).
So, for the above input arrayList the output arrayList will be:
[{1s, 3f, 46h}, {40f, 22x, 4m}]
有人可以建议我如何以简单有效的方式完成上述工作。请给 一些示例代码,如果可能的话。
谢谢!
答案 0 :(得分:0)
请考虑以下事项:
我尝试了一个逻辑,如果这对你有用,我会很高兴。
`ArrayList<A> arrList` = [{1s, 3f, 46h}, {333s, 67b,67m, 67h}, {3a, 3x}, {40f, 22x, 4m}... and so on]
ArrayList<String> newList = new ArrayList<String>();
for ( A a: arrList){
for(String s : a) {
int[] temp = a.indexOf(s);
if (temp > 1){
break; // will break the immediate loop, NOT the Outer loop
}
else{
newList.add(s);
}
}
}
答案 1 :(得分:0)
因此,如果我正在为此编写测试,我会发现我需要的一件事就是能够确定前缀。给定字母“55p”的A,前缀应为“55”。为此写一个测试。前缀方法属于哪里?可能在A类本身。它应该看起来像:
public String prefix() {
return ...;
}
一旦你有了这个方法,很容易迭代列表中的所有A并确定它们中是否有相同的前缀。