我有String的数组列表"mArrayListvarinats",其中包含用管道分隔的字符串,例如

225356175|225356176|225356177|225356178|225356179|225356180|225356181|225356182|225356183|225356184|225356185|225356186|225356187|225356188|225356189|225356190|225356191|225356192

mArrayListvarinats的大小可能是0直到n现在我想从mArrayListvarinats中找出那些字符串之间的公共字符串。

对于前。如果大小为两个,则代码可能如下所示。

String temp[] = mArrayListvarinats.get(0).split("\\|");
String temp1[] = mArrayListvarinats.get(1).split("\\|");


然后循环将在两个数组上工作以得到一个公共数组。但是,如何在循环内以任意大小实现它,因为这些临时数组将在mArrayListvarinats的循环中生成?

最佳答案

这样的事情应该工作:

HashSet<String> allStrings = new HashSet<String>();
HashSet<String> repeatedStrings = new HashSet<String>();

for(String pipedStrings: mArrayListvarinats){
    String temp[] = pipedStrings.split("\\|");
    for(String str : temp){
        if(!allStrings.add(str)){
            repeatedStrings.add(str);
        }
    }
}


这样,您将拥有包含所有唯一字符串的HashSet allStrings。另一个HashSet repeatedStrings包含出现多次的所有字符串。

07-28 12:37