将String中的转换TreeSet与另一个TreeSet Java 7进行比较

时间:2016-01-30 23:04:25

标签: string java-7 treeset

使用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]

我无法理解的问题是,当我将String中的转换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)”+ intersection(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;
    }

1 个答案:

答案 0 :(得分:1)

代码中的

set3只包含一个元素:一个等于“A,B,C,D”的字符串。这个字符串不等于set1中的四个字符串中的任何一个,它们是“A”,“B”,“C”和“D”。两个集合的toString()表示恰好相同,但这并不意味着他们有相同的内容。

Arrays.asList()上的

String不会分裂任何内容;它总是会创建一个单元素列表。如果要将字符串拆分为多个子字符串,请使用String.split()方法。