使用java中的公共表达式将数组列表拆分为另一个数组列表

时间:2015-05-30 17:41:25

标签: java arrays

我在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'分割数组。作为常见的破坏者。我怎样才能做到这一点?这对我来说似乎很复杂。我无法建立它的逻辑。

2 个答案:

答案 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!!