Java 查找字符串数组列表之间的公用项

Java 查找字符串数组列表之间的公用项,java,android,arrays,string,arraylist,Java,Android,Arrays,String,Arraylist,我有一个字符串数组列表“mArrayListvarinats”,其中包含管道分隔字符串,如 225356175 | 225356176 | 225356177 | 225356178 | 225356179 | 225356180 1245356181 1245356182 1245356183 1245356185 1245356186 1245356187 1245356188 1245356189 mArrayListvarinats的大小可能是0到n现在我想从mArrayListvari

我有一个字符串数组列表
“mArrayListvarinats”
,其中包含管道分隔字符串,如

225356175 | 225356176 | 225356177 | 225356178 | 225356179 | 225356180 1245356181 1245356182 1245356183 1245356185 1245356186 1245356187 1245356188 1245356189

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

例如,如果其大小为2,则代码可能如下所示

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

然后,loop将在两个数组上工作,以获得公共数组。但是如何在循环内的任何大小上实现它,因为这些临时数组将在
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=new HashSet();
HashSet repeatedStrings=新HashSet();
适用于(管柱:mArrayListvarinats){
字符串温度[]=管道字符串。拆分(“\\\\”);
用于(字符串str:temp){
如果(!allStrings.add(str)){
repeatedStrings.add(str);
}
}
}

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

迭代每个字符串并将其放入HashSet。如果在添加时得到false,则表示它已经存在。您可以将其放在单独的哈希集中。通过这种方式,您将获得一个包含所有唯一字符串的哈希集和另一个多次出现的字符串哈希集

Set Set=new hashset();
Set<String> set=new HashSet<String>();
for (int i = 0; i < temp.length; i++) {
    set.add(str[i]);
}
for (int i = 0; i < temp1.length; i++) {
    set.add(str1[i]);
}
对于(int i=0;i

该集合将包含常用字符串。

请尝试以下简短版本:

public static void main(String[] args) {
    List<String> a = new ArrayList<>(asList("225356176|225356177|225356178".split("\\|")));
    List<String> b = new ArrayList<>(asList("225356175|225356176|225356177".split("\\|")));
    a.retainAll(b);
    b.retainAll(a);
    System.out.println(b);
}

如果您只想获取
mArrayListvarinats
variable中的公共字符串,那么应该使用
Set
数据结构Set
将只包含唯一的条目。从示例字符串中,听起来您正在收集具有数值的字符串。所以不会有任何问题。但是,如果要收集字母数字值,则需要注意字母表的大小写,因为
Set
收集区分大小写的值。因此,对于SetA不等于A

这在所有列表中都很常见

List<String> common = Arrays.asList(mArrayListvarinats.get(0).split("\\|"));
for(String varinats: mArrayListvarinats){
List<String> items = Arrays.asList(varinats.split("\\|"));
common = ListUtils.intersection(items,common);
}
List common=Arrays.asList(mArrayListvarinats.get(0.split)(“\\\\”);
for(字符串变量:mArrayListvarinats){
列表项=Arrays.asList(varinats.split(“\\\\”);
公共=列表项交叉点(项目,公共);
}

但为此,您必须使用Apache commons集合库,我希望这不是您的问题:)

下面的代码将返回数组中每个字符串的频率

public static void main(String[] args) {
        String mArrayListvarinats = "225356175,225356176,225356177,225356178,225356179,225356180,225356181,225356182,225356183,225356184,225356185,225356186,225356187,225356188,225356189,225356190,225356191,225356192,225356192";
        List<String> list = Arrays.asList(mArrayListvarinats.split(","));
        Set<String> uniqueWords = new HashSet<String>(list);
        for (String word : uniqueWords) {
            System.out.println(word + ": " + Collections.frequency(list, word));
        }
    }
publicstaticvoidmain(字符串[]args){
字符串marraylistvariants=“22535175225356176225355617722535561782253556179225355618022535618122535561822253556183225356184225356185225356186225356187225356188225356189225356190225356191225356192225356192”;
List=Arrays.asList(mArrayListvarinats.split(“,”);
Set uniqueWords=新哈希集(列表);
for(字符串字:唯一字){
System.out.println(word+“:”+Collections.frequency(list,word));
}
}
频率大于1的字符串是重复的/常见的。您可以根据频率采取行动

public static void main(String[] args) {
        String mArrayListvarinats = "225356175,225356176,225356177,225356178,225356179,225356180,225356181,225356182,225356183,225356184,225356185,225356186,225356187,225356188,225356189,225356190,225356191,225356192,225356192";
        List<String> list = Arrays.asList(mArrayListvarinats.split(","));
        Set<String> uniqueWords = new HashSet<String>(list);
        for (String word : uniqueWords) {
            System.out.println(word + ": " + Collections.frequency(list, word));
        }
    }