Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。
总结:
1. equals() 判断对象内容
2. == 判断对象引用
3. Iterator 用来遍历容器中的元素
测试代码:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetTest {
//结果输出为ELEM
static void AddToSet(){
String str = "ELEM";
String str1 = new String("ELEM");
Set set = new HashSet();
Set setCompare = new HashSet();
set.add(str);
set.add(str1);
setCompare.add(str1);
//Iterator是用来遍历容器中的元素的
Iterator itera = set.iterator();
Iterator iteraCompare = setCompare.iterator();
while(itera.hasNext())
{
System.out.println((String)itera.next());
}
while(iteraCompare.hasNext())
{
System.out.println((String)iteraCompare.next());
}
if(set.equals(setCompare)){
System.out.println("两个对象内容相同");
}
if(set == setCompare){
System.out.println("两个对象相等");
}
}
public static void main(String[] args){
SetTest.AddToSet();
}
}
分享到:
相关推荐
`remove()`会抛出异常如果尝试删除的元素不存在,而`discard()`则不会。例如: ```python name_set.remove('Gina') # 如果Gina不在集合中,将抛出异常 name_set.discard('Gina') # 如果Gina不在集合中,什么都不会...
标题中的“集合的概念”指的是在计算机科学中,集合是一种数据结构,它可以存储一组不重复的元素。在Java中,集合接口(如List、Set和Map)定义了操作这些元素的方法,如添加、删除和查找。集合框架的设计使得开发者...
为了确保`School`中的教师实例不重复,开发者最初尝试使用`set`来存储这些实例。然而,由于`set`要求其元素必须是可哈希的,也就是说,这些元素必须拥有`__hash__`方法,而最初的`Teacher`类并没有提供这个方法,...
65、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别 17 66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几...
在C++标准模板库(STL)中,`Map` 和 `Set` 是两种关联容器,它们都提供了高效的数据存储和检索能力。然而,它们在数据结构、存储方式以及使用场景上...而在处理需要自动排序且元素不重复的简单集合时,`Set` 更合适。
然而,上述方法可能会遇到比较复杂的问题,比如数组中包含了对象或其他引用类型的数据时,简单地转换成字符串可能并不能有效区分重复与否。在这种情况下,我们需要实现更高级的逻辑来比较子数组的内容。 在处理比较...
Set 集合则不允许元素重复,且无序。Set 接口的实现通常依赖于元素的 equals() 和 hashCode() 方法来判断元素是否重复,确保集合中的唯一性。HashSet 是 Set 的一种实现,它使用哈希表(实际上是一个 HashMap)来...
这个资源不太新,但是,对于基础的部分还是有用。 一. Java基础部分 2 1、一个".java"源文件中是否可以包括多个...67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 2
总结,Map和Set是JavaScript中用于数据存储和操作的重要工具,它们提供了更强大的数据结构选择,尤其在处理键值对和不重复元素的场景下。开发者可以根据项目需求和目标浏览器的兼容性来决定是否采用这些新数据类型。
默认情况下,`strict`为`FALSE`,意味着不区分数据类型。例如,如果`needle`是字符串,即使`haystack`中的元素是对应的整数,也会被视为匹配。`in_array()`返回`TRUE`表示找到了匹配项,反之返回`FALSE`。 然而,当...
这种方法的去重过程非常简洁,且不需要手动检查重复元素,由Set自动完成。但是,需要注意的是,由于Set在某些旧的浏览器中不支持,所以使用前需要确保兼容性。 5. 利用Set结构和展开运算符 此方法与上一个方法类似...
集合(Set)是无序的不重复元素序列,用大括号 `{}` 或 `set()` 函数创建。集合支持数学运算,如并集、交集和差集。例如: ```python set1 = {1, 2, 3} set2 = {2, 3, 4} # 创建集合 print(set1) # 输出 {1, 2, 3} #...
总结来说,Set和Map的引入极大地丰富了JavaScript的数据处理能力,特别是对于处理不重复数据和任意类型键值对的需求。同时,WeakSet提供了一种安全的处理对象引用的方式,避免了内存泄漏的问题。在实际开发中,合理...
`Collection`接口是Java集合框架的核心接口之一,它代表了一个不重复元素的集合。`Collection`接口有多个子接口和实现类,如`List`、`Set`等。以下是一些主要的实现: 1. **List**: - `List`是一种有序集合,允许...
集合的元素可以是任何类型,包括数字、字母、其他集合等,但一个集合中不允许有重复的元素。 2. **集合的分类** - 空集(Empty Set):不包含任何元素的集合,记为∅或{}。 - 非空集(Non-empty Set):至少包含...
接下来是Set接口的实现,HashSet是最基础的无序不重复元素集合。它通过哈希表(HashMap内部结构)来存储元素,插入和查找速度较快,但不保证元素顺序。LinkedHashSet与HashSet类似,但它维护了元素的插入顺序,增加...
集合(Set)则是一种无序的、不重复的元素集合,可以理解为没有value的字典,同样使用花括号 `{}` 表示。创建集合的常见方法包括使用 `set()` 函数转换其他数据结构,如列表、元组、字符串或另一个集合。例如,`a = ...
总结起来,`Set`映射适用于不需要特定顺序且不允许重复元素的场景,而`SortedSet`映射则在需要保持元素排序顺序时使用。在Hibernate中,正确地配置和使用这两种集合类型,能够帮助开发者更方便地管理和操作数据库中...
14. symmetric_difference(set):返回两个集合中不重复的元素集合。 15. symmetric_difference_update(set):移除集合中的元素,这些元素在另一个指定集合中也出现。 16. union(set):返回两个集合的并集。 17. ...