簡體   English   中英

找到不相交的集合,不管字符串的大小寫

[英]Find disjoint set irrespective of case of the strings

我正在使用Collection.disjoint來查找兩個字符串集合c1, c2.的不相交集合c1, c2. 但它不會忽略大小寫,例如 - string strStr不同。

return Collections.disjoint(c1, c2);

如果不使用for循環,我能否找到忽略其案例的兩個集合的不相交?

如果你絕對堅持不使用for循環,你總能找到兩個Collection of lowercased String s之間的脫節。 使用Google Guava ,應該是這樣的:

package ru.zombator.stackoverflow;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;

import com.google.common.base.Function;
import com.google.common.collect.Collections2;

public final class DisjointIgnoreCase {
    public static void main(String[] args) {
        Collection<String> coll1 = Arrays.asList("donald", "Duck");
        Collection<String> coll2 = Arrays.asList("DONALd", "Donut");
        Collection<String> coll3 = Arrays.asList("Homer", "DONUT");
        Collection<String> coll4 = Arrays.asList("DONALD", "duck");

        // will all print false
        System.out.println(disjointIgnoreCase(coll1, coll2));
        System.out.println(disjointIgnoreCase(coll2, coll3));
        System.out.println(disjointIgnoreCase(coll1, coll4));

        // will print true (no common elements)
        System.out.println(disjointIgnoreCase(coll1, coll3));
    }       

    private static boolean disjointIgnoreCase(Collection<String> coll1, Collection<String> coll2) {
        return Collections.disjoint(lowercased(coll1), lowercased(coll2));
    }       

    private static Collection<String> lowercased(Collection<String> coll) {
        return Collections2.transform(coll, new Function<String, String>() {
            @Override
            public String apply(String input) {
                return input.toLowerCase(Locale.US);
            }
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM