比较从字符串转换的 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()
方法。
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()
方法。