HashSet简单的理解就是HashSet对象中不能存储相同的数据,存储数据时是无须的。但是HashSet存储元素的顺序并不是按照存入时的顺序(和List显然不同) 是按照哈希值来存的所以取数据也是按照哈希值取得。存储是无序的这就和C++里的Set就不一样了C++里面的Set是有序的我认为这是在使用时候的主要区别。下面就是HashSet简单的用法:
一.申请方式括号里面的类型是随你的需要更改的。
二.常用方法:
类型 方法名 功能
boolean add(E e) 如果当前列表中不存在e, 则将e加入列表
void clear() 从列表中删除所有元素
boolean contains(Object j) 判断列表中是否有元素j
Iterator<E> iterator() 得到当前列表的遍历器
boolean remove(Object j) 如果列表中存在元素j,则将其从列表中删除
int size() 得到列表中元素的个数
三.遍历的方法:
1.用Iterator来遍历
这是比较常用的方法, 但是这种方法在使用的时候HashSet修改一次之后如果想再次遍历,必须重新申请Iterator,否则 无法遍历,但是把Itetator放在一个函数里, 那么就省去多次申请Iterator了。
2.这种方法就是用for循环遍历。
这种方法我感觉还行,具体用那种方法遍历自己斟酌。
四.简单的使用
package cn.java.text.Main;
import java.util.*;
public class Main4 {//HashSet
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ip = new Scanner(System.in);
HashSet<String> hashSet = new HashSet<String>();
int i;
String aString;
for(i = 0; i < 6; i++) {
aString = ip.next();
hashSet.add(aString);//加入列表
}
Iterator<String> iterator = hashSet.iterator();//遍历器
while(iterator.hasNext())System.out.print(iterator.next()+" ");//判断是否有,有就输出
String bString;
bString = ip.next();
hashSet.remove(bString);//删除
/*Iterator iterator2 = hashSet.iterator();
while(iterator2.hasNext()) {//遍历器遍历
System.out.print(iterator2.next()+" ");
}*/
for(String string: hashSet)System.out.print(string + " ");//for循环遍历
}
}
五.当HashSet是整型时