比较从字符串转换的 TreeSet 与另一个 TreeSet Java 7

Compare a converted TreeSet from a String with another TreeSet Java 7

Using Java 7 我正在寻找一种方法来将我转换为 TreeSet 的字符串与另一个定义的 TreeSet 进行比较。

这是一个例子:

public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) {
        Set<T> tmp = new TreeSet<T>();
        for (T x : setA)
          if (setB.contains(x))
            tmp.add(x);
        return tmp;
      } 

public static void main(String args[]) {

String str ="A, B, C, D";
Set<String> set3 = new TreeSet(Arrays.asList(str));
TreeSet<String> set1 = new TreeSet<String>();
TreeSet<String> set2 = new TreeSet<String>();
set1.add("A");
set1.add("B");
set1.add("C");
set1.add("D");
set2.add("A");
set2.add("B");
set2.add("C");
set2.add("D");
System.out.println("Intersection: Set 1 & 2: " + intersection(set1, set2));
System.out.println("Intersection: Set 1 & 3: " + intersection(set1, set3));


 }

将一组与我使用 set.add 添加其元素的另一组进行比较按预期工作:

Intersection: Set 1 & 2: [A, B, C, D]

我无法理解的问题是为什么当我比较从字符串转换的 TreeSet 与另一个 TreeSet 时没有匹配项。

Intersection: Set 1 & 3: []

但是当我打印 set1 和 set3 时,我发现它们完全一样??

 System.out.println("set1: " + set1);
 System.out.println("set3: " + set3);

set1: [A, B, C, D]
set3: [A, B, C, D]

然后我尝试遍历字符串并将每个元素添加到集合中,但这也不起作用。

System.out.println("Intersection: (set1 - set3)" + 交集(set1, convertString2Set(str)));

private static Set convertString2Set(String line) {
          List<String> linesList = new ArrayList<String>(Arrays.asList(line));
         Set<String> set = new TreeSet<String>();
        for (String elme : linesList) {
            set.add(elme);
        }
        return set;
    }

set3 在您的代码中只包含一个元素:一个等于 "A, B, C, D" 的字符串。此字符串不等于 set1 中的四个字符串中的任何一个,即 "A"、"B', "C" 和 "D"。这两个集合的 toString() 表示恰好为相同,但不代表内容相同

Arrays.asList()String 上不拆分任何东西;它将始终创建一个单元素列表。如果要将字符串拆分为多个子字符串,请使用 String.split() 方法。