Collection集合
Collection接口有List、Queue、Set三个子接口
Set子接口有一个抽象类AbstractSet
AbstractSet下有两个实现类,接下来介绍HashSet实现类
add():向HashSet集合中添加元素
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();//调用HashSet无参构造方法创建HashMap对象给map全局变量
set.add("HUI");
set.add("asf");//不会按照保存的顺序储存数据,遍历是不能保证下次结果和上次相同
}
}
add方法的实质是map全局变量调用了put方法,将数据存到了key中,
因为HashMap的key不允许重复,所以HashSet添加的元素也不允许重复
HashSet add方法源码如下:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
isEmpty():判断是否为空
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
for (String str : set) {
System.out.println(str);
}
System.out.println(set.isEmpty());
}
}
size():获得集合容器中有多少个元素
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
System.out.println(set.size());
}
}
iterator():将HashSet中数据转存到iterator中,返回在此Set中的元素上进行迭代的迭代器
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
Iterator<String> it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
clear():清空集合容器中元素
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
set.clear();
System.out.println(set.isEmpty());
System.out.println(set.size());
}
}
contains():判断是否存在某元素
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
boolean flag = set.contains("fore");
}
}
remove():删除元素,成功返回true,与Arraylist不同的是不能指定下标,没有重载,因为HashSet不保证set的迭代顺序
package set;
import java.util.HashSet;
import java.util.Iterator;
public class demo {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("fore");
set.remove("two");
System.out.println(set.size());
}
}
存入该实现类对象中的元素是无序的,即在遍历该集合元素时,遍历出的元素顺序未必和向集合中添加元素的顺序一致;这次遍历出来的顺序未必和上一次遍历出来的元素顺序一致;