`
hqbuaa1013
  • 浏览: 18346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

HashSet的size问题

阅读更多
//打印什么?为什么?
public class TestSet {
	public static void main(String[] args) {
		Set<Short> s=new HashSet<Short>();
		for(short i=0;i<10;i++){
			s.add(i);
			s.remove(i-1);
		}
		System.out.println("size of s:"+s.size());
	}
}

分享到:
评论
1 楼 lclcr 2010-05-21  
按照你上面的代码我写了两个,希望你能够对比一下,找到原因,具体不说了,看代码吧:

import java.util.HashSet;

//第一个:关于Integer的

import java.util.Set;

public class TestSetInteger {  
    public static void main(String[] args) {  
        Set<Integer> s=new HashSet<Integer>();  
        for(int i=0;i<10;i++){  
        System.out.println("int(i) = "+(int)i);
        System.out.println("添加前 i = "+i);
            boolean mark = s.add(i);
            if(mark){
            System.out.println("添加:"+i+" 成功");
            }else{
            System.out.println("添加:"+i+" 失败");
            }
            System.out.println("size of s:"+s.size());
            System.out.println("添加后i = "+i);
            int k = i-1;
            boolean flag = s.remove(k);
            System.out.println("删除 k ="+k);
            if(flag){
            System.out.println("删除:"+k+" 成功");
            }else{
            System.out.println("删除:"+k+" 失败");
            }
            System.out.println("size of s:"+s.size());
        }  
    }  


import java.util.HashSet;

//第二个:关于Short的

import java.util.Set;

public class TestSetShort {  
    public static void main(String[] args) {  
        Set<Short> s=new HashSet<Short>();  
        for(short i=0;i<10;i++){  
        System.out.println("int(i) = "+(int)i);
        System.out.println("添加前 i = "+i);
            boolean mark = s.add(i);
            if(mark){
            System.out.println("添加:"+i+" 成功");
            }else{
            System.out.println("添加:"+i+" 失败");
            }
            System.out.println("size of s:"+s.size());
            System.out.println("添加后i = "+i);
            [color=red]short k = (short)(i-1);
  //注意这里
            boolean flag = s.remove(k);
            System.out.println("删除 k ="+k);
            if(flag){
            System.out.println("删除:"+k+" 成功");
            }else{
            System.out.println("删除:"+k+" 失败");
            }
            System.out.println("size of s:"+s.size());
        }  
    }  
}  [/color]

相关推荐

    hashset类的使用

    System.out.println("Size of HashSet = " + hashSet.size()); // 遍历HashSet for (String element : hashSet) { System.out.println(element); } } } ``` 上面的示例程序创建了一个HashSet对象,并通过...

    HashSet去重

    - **效率问题**:对于大量数据而言,`HashSet`的效率非常高。哈希表通过`hashCode`快速定位对象,大大减少了不必要的`equals`方法调用次数,从而提高了处理速度。 #### 六、`HashSet`与其他集合类的区别 - **`...

    HashSet类的用法.pdf

    此外,`HashSet`是非同步的,这意味着多线程环境下的安全问题需要通过外部同步机制解决。 #### 二、特点 1. **无序性**:`HashSet`中的元素是无序的,即不能保证元素的存储顺序与插入顺序一致。 2. **非同步性**:...

    HashSet详解和使用示例_动力节点Java学院整理

    - `size()`:返回HashSet中元素的数量。 ### HashSet的数据结构 HashSet继承自AbstractSet,实现了Set接口。它内部有一个HashMap类型的成员变量`map`,所有的操作实际上都是通过这个HashMap进行的。HashSet中的每个...

    c++用vector实现HashSet

    在C++编程中,HashSet是一种常用的集合数据结构,它提供了存储唯一对象的功能,类似于Java中的HashSet。虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。...

    集合类HashSet

    HashSet提供了多种操作方法,如add()用于添加元素,remove()用于删除元素,contains()用于检查元素是否存在,size()返回集合中元素的数量,isEmpty()判断集合是否为空。此外,HashSet还支持迭代器(Iterator),允许...

    源码解析jdk7.0集合:HashSet的底层实现原理.pdf

    其他如返回集合中元素个数的size()方法,则是直接调用了内部HashMap的size()方法。检查HashSet是否为空的isEmpty()方法,也是调用了HashMap的isEmpty()方法。 总结来说,HashSet是通过内部的HashMap来管理集合元素...

    Java中HashSet的解读_.docx

    此外,HashSet的`size()`方法返回HashMap中键的数量,`isEmpty()`方法检查HashMap是否为空,这些都是直接调用HashMap对应的方法。同样,`clear()`方法清空HashSet,实际上就是调用HashMap的`clear()`方法清除所有...

    HashSet工作原理_动力节点Java学院整理

    `size()` 方法会返回 HashSet 中的元素个数,它实际上是调用 HashMap 的 `size()` 方法。`isEmpty()` 方法会判断 HashSet 是否为空,它实际上是调用 HashMap 的 `isEmpty()` 方法。 HashSet 的添加和删除元素 ...

    Java中的HashSet详解和使用示例_动力节点Java学院整理

    HashSet的主要API包括add、clear、clone、contains、isEmpty、iterator、remove、size等方法。这些方法的作用是对HashSet对象进行操作,如添加元素、清空集合、克隆集合、判断元素是否存在、判断集合是否为空、获取...

    Java面试题 从源码角度分析HashSet实现原理

    4. HashSet的其他方法:HashSet的其他方法,如contains、remove、size等,都是通过调用HashMap的对应方法来实现的。 5. HashSet的实现机理:HashSet的实现机理可以总结为:HashSet是基于HashMap实现的,HashSet的...

    如何对多对多关系获得的set集合中的记录进行分页

    至此,我们成功地处理了多对多关系下的分页问题。在Action层和JSP页面中,我们仍按照之前的方式获取和展示数据,但此时的数据源已经是多对多关系的子集。 总结来说,SSH框架中的分页主要包括以下几个步骤: 1. 创建...

    Java-HashSet:简单的哈希集,它打印列表中的所有项目,然后打印所有没有重复的项目

    此外,Java的HashSet还提供了其他有用的方法,如`contains()`用于检查集合是否包含某个元素,`remove()`用于删除指定元素,以及`size()`返回集合中的元素数量。哈希集不保证元素的顺序,因此不适合那些需要保持元素...

    java集合类源码分析之Set详解.docx

    - `HashSet(Collection&lt;? extends E&gt; c)`:根据传入的集合c初始化HashSet,HashMap的容量至少为c.size()的1.5倍。 - `HashSet(int initialCapacity, float loadFactor)`:指定初始容量和加载因子创建HashSet。 - ...

    SimpleHashSet:为您节省 25% 的内存

    1.0.1'节省 25% 的内存Java 中的对象大小: : : Davlik 中的对象大小: : 事实上, java.util.HashSet只是一个包装java.util.HashMap ,所以所保留的堆大小为O( n * entry_size )。 java.util.HashMap使用单独的...

    就业班JavaSE-day08每日作业卷1

    LinkedList提供了多种操作,如add、set、get、remove、clear、size等,这些方法分别用于添加元素、设置元素、获取元素、删除元素、清空集合和获取集合大小。 【LinkedList 特有方法】 除了基本操作外,LinkedList...

    java-leetcode题解之第3题无重复字符的最长子串.zip

    在本压缩包中,我们关注的是Java编程语言在解决LeetCode算法问题上的应用,特别是针对第3题“无重复字符的最长子串”(Longest Substring Without Repeating Characters)的解决方案。这是一道非常经典的字符串处理...

    在list集合中输入元素,去除重复的元素并输出

    可以通过倒序遍历来减少这个问题的影响。 ### 二、使用迭代器去除重复元素 这种方法通过迭代器(Iterator)来遍历列表,并在遍历过程中删除重复的元素。这种方式可以有效地避免`ConcurrentModificationException`...

Global site tag (gtag.js) - Google Analytics