我在java中有一个名为temp的数组列表,其中包含以下内容:
temp [abc,123,456,678,abc,xyz,tyh,479,572,4891,asx,abc,4r65,abc,xg,5684]
现在我想将上面的数组拆分成另一个数组列表,如下所示:
newtemp[0]=[abc,123,456,678]
newtemp[1]=[abc,xyz,tyh,479,572,4891,asx]
newtemp[2]=[abc,4r65]
newtemp[3]=[abc,xg,5684]
我想用' abc'分割数组。作为常见的破坏者。我怎样才能做到这一点?这对我来说似乎很复杂。我无法建立它的逻辑。
答案 0 :(得分:2)
在我看到toString()
项目的ArrayList
后,我看到了
[abc, 123, 456, 678, abc, xyz, tyh, 479, 572, 4891, asx, abc, 4r65, abc, xg, 5684]
这就是我决定处理数据的方式,这让我相信最终结果是List<List<String>>
并且外部列表的每个元素都有一个以&#34开头的内部子列表; abc&# 34 ;.这是通过迭代temp的单个for
循环来完成的,只要循环遍历&#34; abc&#34;就会创建一个新的子列表。您会看到我的列表以[&#34; aaa&#34;,&#34; 123&#34;]开头,这些项目会被跳过,直到我们遇到第一个&#34; abc&#34;。
package stackoverflow;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class StackOverflow {
public static void main(String[] args) throws Exception {
List<String> temp = new ArrayList(Arrays.asList("aaa", "123", "abc", "123", "456",
"678", "abc", "xyz", "tyh", "479", "572", "4891", "asx", "abc",
"4r65", "abc", "xg", "5684"));
List<List<String>> newTemp = new ArrayList();
for (String tmp : temp) {
// Start a new sublist
if (tmp.contentEquals("abc")) {
newTemp.add(new ArrayList());
}
// Add to the newest sublist
if (newTemp.size() > 0) {
newTemp.get(newTemp.size() - 1).add(tmp);
}
}
for (List<String> list : newTemp) {
System.out.println(list);
}
}
}
结果:
[abc, 123, 456, 678]
[abc, xyz, tyh, 479, 572, 4891, asx]
[abc, 4r65]
[abc, xg, 5684]
答案 1 :(得分:0)
Make these variables as static
private static int index = 0;
private static int count = 0;
//logic
for (int i = 0; i < temp.size(); i++) {
if (temp.get(i).equals(temp.get(index)) && i > 0) {
System.out.println(temp.subList(index, count));
index = i;
}
count++;
}
System.out.println("last list = " + temp.subList(index, count));
您可以将每个子列表存储在您创建的arraylist中。
Hope it helps!!