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();