当前位置: 首页 > news >正文

如何在图片上做网站水印图个人网站首页设计

如何在图片上做网站水印图,个人网站首页设计,网站死链接检查,做视频网站资质Java的集合中主要由List,Set,Queue,Map构成,Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作。 HashSet 作为Set容器的代表子类,HashSet经常被用到&#xff0c…

Java的集合中主要由List,Set,Queue,Map构成,Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作。

HashSet

作为Set容器的代表子类,HashSet经常被用到,我们通过源码去分析它:

public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable
{private transient HashMap<E,Object> map;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object();public HashSet() {map = new HashMap<>();}public boolean add(E e) {return map.put(e, PRESENT)==null;}public boolean remove(Object o) {return map.remove(o)==PRESENT;}
}

虽然HashSet实现了Set接口,但通过源码可以看到,它的底层逻辑实现其实依据的是HashMap,通过操作map的key值来实现元素的增删改查,下面通过一个小测试类去用下HashSet。

public class Test {public static void main(String[] args) throws FileNotFoundException {// 创建一个新的HashSetHashSet<Integer> set = new HashSet<>();// 添加元素set.add(3);set.add(4);set.add(0);set.add(1);set.add(4);// 输出HashSet的元素个数System.out.println("HashSet size: " + set.size());// 判断元素是否存在于HashSet中boolean containsWanger = set.contains(2);System.out.println(containsWanger);// 删除元素boolean removeWanger = set.remove(1);System.out.println(set);// 修改元素,需要先删除后添加boolean removeChenmo = set.remove(3);boolean addBuChenmo = set.add(4);System.out.println(removeChenmo && addBuChenmo);// 输出修改后的HashSetSystem.out.println(set);}
}

输出:

HashSet size: 4
false
[0, 3, 4]
false
[0, 4]

由代码结果进一步证明了我们的结论:1、存储数据不重复,但add重复数据并不报错,原因是第一个数据会被第二次重复数据覆盖掉;2,无序,很多人发现输出了一个有序的数字集合,这个其实与我们所说的有序是有区别的,在Set中的有序无序是指输入的顺序与输出的顺序是否一致 当然,想要实现有序可以通过LinkedHashSet,底层通过链表记录元素插入顺序。

这里会有一个问题:集合中的无序性和不可能重复性是什么意思?

  • 无序性:所谓无序性不等于随机性,也不等于输出无序,就如同上面我们看到的向HashSet中随机添加数字,输出是从大到小,看似有序,实际此序非彼序!真正的无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值进行判断。

  • 不可重复性:指添加的元素按照 equals() 判断时 ,返回 false,因此,实现不可重复性,必须要同时重写 equals() 方法和 hashCode() 方法。

LinkedHashSet

那么就有一个问题:“我就想存一个不重复的数据集合,同时又想要他们有序怎么办呢?”,Java中用LinkedHashSet就可以解决了!LinkedHashSet 是基于 LinkedHashMap 实现的,并且使用链表维护了元素的插入顺序,具有快速查找、插入和删除操作的优点,又可以维护元素的插入顺序!下面展示测试案例。

LinkedHashSet<String> set = new LinkedHashSet<>();
// 添加元素
set.add("Hello");
set.add("Java");
set.add("Build");
set.add("Java");
System.out.println(set);
// 删除元素
set.remove("Hello");// 修改元素
set.remove("Java");
set.add("java");// 查找元素
boolean bool = set.contains("Build");
System.out.println("哈喽:" + bool);//输出
System.out.println(set);

输出:

[Hello, Java, Build]
哈喽:true
[Build, java]

通过输出结果我们可以得出结论:LinkedHashSet中的元素不可重复,有序。

TreeSet

通过上面两个集合类我们大概能够猜到,几乎所有的Set集合的底层都是通过Map去实现,TreeSet同样是基于TreeMap实现,TreeMap 基于红黑树实现,所以TreeSet也就自带了排序功能。

 public TreeSet() {this(new TreeMap<E,Object>());}

示例:

public class Test {public static void main(String[] args) {// 创建一个 TreeSet 对象TreeSet<Integer> set = new TreeSet<>();set.add(3);set.add(6);set.add(2);set.add(1);set.add(0);set.add(9);System.out.println(set);}
}

输出:

[0, 1, 2, 3, 6, 9]

总结

  1. HashSet、LinkedHashSet 和 TreeSet 都是 Set 接口的实现类,都能保证元素唯一,并且都不是线程安全的。

  2. HashSet、LinkedHashSet 和 TreeSet 的主要区别在于底层数据结构不同。HashSet 的底层数据结构是哈希表(基于 HashMap 实现)。LinkedHashSet 的底层数据结构是链表和哈希表,元素的插入和取出顺序满足 FIFO。TreeSet 底层数据结构是红黑树,元素是有序的,排序的方式有自然排序和定制排序。

  3. 底层数据结构不同又导致这三者的应用场景不同。HashSet 用于不需要保证元素插入和取出顺序的场景,LinkedHashSet 用于保证元素的插入和取出顺序满足 FIFO 的场景,TreeSet 用于支持对元素自定义排序规则的场景。

  4. 此外,HashSet、LinkedHashSet允许有 null 值,TreeSet不允许有null值,当向 TreeSet 插入 null 元素时,TreeSet 使用 compareTo 方法与 null 元素进行比较,报错:java.lang.NullPointerException。

http://www.dt0577.cn/news/47242.html

相关文章:

  • sql server做网站宁波核心关键词seo收费
  • 学校网站建设的作用seo优化网络推广
  • 铁路网站建设一句简短走心文案
  • 山西seo网站设计百度人工客服电话是多少
  • 做童装批发网站湖南官网网站推广软件
  • 连云港做网站理发培训专业学校
  • 南通网站建设十年以上公司搜索量排行
  • h5四合一网站建设百度推广关键词匹配模式
  • 恩施网站建设教程网络营销的策划方案
  • wordpress模板淘宝客模板下载seo网站关键词排名提升
  • php网站开发笔试题google服务框架
  • 网站开发项目资金运用明细搜索引擎优化工作
  • 武汉人才网官方网站入口上海十大公关公司排名
  • 做靠谱的网络兼职网站东莞网站推广排名
  • 公司的网站哪个部门做关键词筛选工具
  • wordpress 双栏主题泉州百度首页优化
  • 谷歌外贸网站seo怎么做企业宣传推广方案
  • 做网站一定要用云解析吗谷歌搜索入口 镜像
  • 手机网站做淘宝客小学生摘抄新闻
  • 有个在家做的客服网站seo网站推广计划
  • 中国建筑网站平台有哪些知乎关键词优化软件
  • 深圳网站开发语言注册网址
  • 秦皇岛网站建设服务如何搭建一个网站
  • 西安网站建设首选排行榜哪个网站最好
  • 义乌市建设局网站百度竞价防软件点击软件
  • 动态网页设计网站建设常用的网络营销方法及效果
  • 赤峰市哪里做网站代做关键词收录排名
  • 做网站的规范搭建网站的软件
  • 建设局电话搜索引擎优化的概念
  • 网建设门户网站seo外包收费