hashset有序吗

hashset 是无序的。hashset本质就是HashMap的实现,只取用了其中的Key值。hashset是一种没有重复元素的无序集合,它既不能保证存储和取出顺序一致,更不能保证自然顺序(a-z)。

一、hashset介绍

HashSet是set接口的实现类,也是我们最常用的set集合。

储存的是无序,唯一的对象。

由于是无序 的所以每组数据都没有索引,很多list可用的方法他都没有。

凡是需要通过索引来进行操作的方法都没有,所以也不能使用普通for循环来进行遍历,只有加强型for和迭代器两种遍历方法。

例如:

get(i);

set(int index,Object o);

remove(int index);

等 需要用索引来操作的方法都没有;

二、构建

HashSet()

构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

HashSet(Collection<? extends E> c)

构造一个包含指定 collection 中的元素的新 set。

HashSet(int initialCapacity)

构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。

HashSet(int initialCapacity, float loadFactor)

构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。

三、HashSet的各种方法

增加

add(null);

删除

remove(news);

对比查找

contains(news);

清空集合

clear();

获取长度

size();

示例:

public class NewsHashSet {undefined

public static void main(String[] args) {undefined

News news = new News(1, "北京终于放晴了!", "新闻社");

News news2 = new News(2, "香港回归纪念日", "人民新闻");

News news3 = new News(3, "假奶粉事件曝光", "人民新闻网");

//创建HashSet集合,储存无序,唯一的数据

//HashSet是是使用equals来进行对象对比,确定数据是唯一的

//如果两个数据的对象是一致的,那么HashSet将会把这两个合并,只储存一个空间

HashSet<News> set = new HashSet<News>();

set.add(news);

set.add(news2);

set.add(news3);

//由于HashSet储存数据都是无序的,所以不能用get(i);来获取具体对象

//所以我们必须通过遍历来得到HashSet的各个数据,由于是没有索引的

//所以不能使用普通类型的for来遍历它

//HashSet只能通过增强型for和迭代器来遍历它

//增强型for

for(News n : set){undefined

System.out.println(n.getID()+"\t"+n.getLitter()+"\t"+n.getAuthor());

}

System.out.println("*****************************************");

//迭代器

Iterator<News> it = set.iterator();

while (it.hasNext()) {undefined

News n = it.next();

System.out.println(n.getID()+"\t"+n.getLitter()+"\t"+n.getAuthor());

}

set的各种方法

//set增加

set.add(null);

//删除

set.remove(news);

//对比查找

set.contains(news);

//清空集合

set.clear();

//获取长度

set.size();