- import java.util.*;
-
-
public class Test {
-
public static void main(String args[]) {
-
Set<Short> s = new HashSet<Short>();
-
for (Short i = 0; i < 100; i++) {
- s.add(i);
- if(i>0){
- s.remove(i - 1);
- }
- }
- System.out.println(s.size());
- }
- }
运行结果为100
分析:
1 Set的remove调用的是删除一个对象remove(Object)
2 Short 和 Integer 进行比较时,是肯定不等的,虽然他们的数值相等。
因为在equals时,先判断对象类型instanceof,他们类型不同,自然不等。
boolean remove(Object o)
如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。
指定者:
接口 Collection <E> 中的 remove
参数:
o - 从 set 中移除的对象(如果存在)
返回:
如果此 set 包含指定的对象,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)
NullPointerException - 如果指定的元素为 null,并且此 set 不允许 null 元素(可选)
UnsupportedOperationException - 如果此 set 不支持 remove 操作
remove的参数是Object,而lz的程序里写的是int值,所以没有删除掉。
分享到:
相关推荐
然后提出了一个问题:在`A`的子类中可以使用哪些选项? **选项分析**: - **A. public int method1(int a, int b)**{ return 0; } - **B. private int method1(int a, int b)**{ return 0; } - **C. private int ...
Set<Short> s = new HashSet<Short>(); for (short i = 0; i < 100; i++) { s.add(i); s.remove(i - 1); } System.out.println(s.size()); } } ``` 对于这段代码,问题提出了以下选项: - (a) 1 - (b) 100 -...
#include <iostream> using namespace std; int main() { int num; cout << "请输入一个数字:"; cin >> num; cout << "你输入的数字是:" << num << endl; return 0; } ``` 这个例子展示了如何读取用户输入...
#include <iostream> int main() { std::cout << "I am a student.\n"; return 0; } ``` 5. 使用F7快捷键编译并链接程序,生成`.obj`和`.exe`文件。 6. 运行程序,查看输出结果。 1.2 简单的输入与输出 在C++中,...
)以及位运算符(&,|,^,~,<<,>>,>>>)等。 4. **控制流程** 条件语句如if-else,switch-case用于根据条件执行不同代码块。循环语句如for,while,do-while用于重复执行某段代码。跳转语句如break,continue...
19. **异构集合与泛型接口**:IList<T>、ICollection<T>、IEnumerable<T>等接口定义了不同类型的集合操作。 20. **属性与索引器**:属性提供对类成员的访问,索引器允许类像数组一样被访问。 21. **静态类与静态...
4. **数组和集合**:数组是相同类型元素的序列,集合(如List<T>)则允许动态添加和删除元素。例如: ```csharp int[] numbers = { 1, 2, 3, 4, 5 }; List<string> names = new List<string> { "Tom", "Jerry", ...
List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); ``` 以上只是C#语法的一部分介绍,实际上C#还有更多高级特性和概念,如委托(delegates)、事件(events)、匿名方法、Lambda表达式、LINQ...
unsigned short hashVal = reinterpret_cast<unsigned short>(c); ``` 在这个例子中,我们把char类型指针转换为unsigned short类型。由于char和unsigned short的大小可能因系统而异,因此这种转换可能是未定义行为。...
Set<String> set = new HashSet<>(); set.add("Java"); set.add("Java"); // 不会被添加,因为equals()判断相等 ``` #### 14. 常见的 RuntimeException - **ArithmeticException**: 发生算术错误时抛出。 - **...
cout << "The size of a short int is:\t" << sizeof(short) << " bytes.\n"; cout << "The size of a long int is:\t" << sizeof(long) << " bytes.\n"; cout << "The size of a char is:\t\t" << sizeof(char) << ...
- Java支持八种基本数据类型:四种整数类型(byte、short、int、long),两种浮点类型(float、double),一个字符类型(char)和一个布尔类型(boolean)。 - **知识点6:运算符** - 算术运算符:+、-、*、/、%...
=、<、>、<=、>=)和逻辑运算符(!、&&、||)。其中,三目运算符(? :)用于条件判断,可以简洁地实现条件赋值。 3. 逻辑循环语句 C++中的逻辑控制结构主要包括if-else语句和循环语句(while、do-while和for)。if-...
function TMyList<T>.GetItem(Index: Integer): T; begin Result := FItems[Index]; end; end; ``` 3. **解释 Delphi 中的匿名方法和如何使用它们。** - **匿名方法**(也称为 Lambda 表达式)是在 Delphi ...
3. **<jsp:include>和<%@ include %>区别是什么?** - `<jsp:include>`是在运行时包含另一个页面,可以传递参数。 - `<%@ include %>`是在编译时包含另一个页面,不能传递参数。 #### 十一、标记库 1. **简述...
- 使用泛型的示例:`List<String> list = new ArrayList<>();` 2. **集合框架**: - Java的集合框架提供了一系列的接口和实现,如List、Set、Map等,用于存储和操作对象集合。 - List接口表示一个有序的集合,...