Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 将从字符串转换的树集与另一个树集Java 7进行比较_String_Java 7_Treeset - Fatal编程技术网

String 将从字符串转换的树集与另一个树集Java 7进行比较

String 将从字符串转换的树集与另一个树集Java 7进行比较,string,java-7,treeset,String,Java 7,Treeset,使用Java7,我正在寻找一种方法来比较我转换为树集的字符串和另一个定义的树集 Intersection: Set 1 & 3: [] 以下是一个例子: public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) { Set<T> tmp = new TreeSet<T>(); for (T x : setA)

使用Java7,我正在寻找一种方法来比较我转换为树集的字符串和另一个定义的树集

Intersection: Set 1 & 3: []
以下是一个例子:

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));


 }
我无法理解的问题是,当我将一个字符串转换的树集与另一个树集进行比较时,为什么没有匹配项

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(“交叉点:(set1-set3)”+交叉点(set1,convertString2Set(str))

convertString2Set私有静态集(字符串行){
List linesList=newarraylist(Arrays.asList(line));
Set=新树集();
用于(字符串elme:linesList){
集合。添加(elme);
}
返回集;
}

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


字符串上的
数组.asList()
不会拆分任何内容;它将始终创建单个元素列表。如果要将字符串拆分为多个子字符串,请使用
字符串.split()
method.

感谢您的解释,我尝试过拆分字符串,然后将其添加到集合中,但它不起作用。那么,如何将字符串的内容与集合的内容进行比较?您到底是如何尝试拆分字符串的?我已经更新了关于如何循环将每个元素添加到集合中的问题。谢谢!谢谢!当我搜索时关于如何将字符串转换为set,我找到的每个答案都使用Array.asList()。但在您的解释之后,我相信Array.asList()如果您在最后寻找一个真正的集合,则不应使用将字符串转换为集合的方式。因此,我在开始时感到困惑。再次感谢您的详细回答。请查看集合的实际内容和大小3。
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;
    }