从字符串列表中删除重复项

时间:2019-10-26 16:35:06

标签: java

我有以下字符串列表:

{ 
    "Name1,Name2",
    "Name2,Name1",
    "Name3,Name4",
    "Name4,Name3"
}

在不使用任何Java / C / Python / C ++ / C#库的情况下,我希望通过打印的方式删除重复项:

Name1,Name2
Name3,Name4

删除重复项的一种方法是:

private static boolean checkIfEquals(String str, String str1) {
        HashSet<String> set1 = new HashSet<>(Arrays.asList(str.split(",")));
        HashSet<String> set2 = new HashSet<>(Arrays.asList(str1.split(",")));
        return set1.equals(set2);
    }

2 个答案:

答案 0 :(得分:3)

使用相同的方法,假设您的字符串列表位于变量List<String> strings中:

List<String> unique = 
 strings.stream()
        .map(str -> new LinkedHashSet<>(Arrays.asList(str.split(","))))
        .distinct()
        .map(set -> set.stream().collect(Collectors.joining(",")))
        .collect(Collectors.toList());

答案 1 :(得分:0)

使用c ++

int main(){
    ios_base::sync_with_stdio(false);
    string list[4]={
                    "Name1,Name2",
                    "Name2,Name1",
                    "Name3,Name4",
                    "Name4,Name3"
                    };

    map<string,bool>exist;
    vector<string>flist;

    for(int i=0;i<4;i++){
        string s=list[i];
        sort(s.begin(),s.end());

        if(exist[s])continue;

        exist[s]=true;
        flist.push_back(list[i]);
    }                

    for(auto item :flist)cout<<item<<"\n";
}
相关问题