Java集合框架-Collection02- LinkedHashSet

简介: Java集合框架-Collection02- LinkedHashSet

堆栈 Stack:


表示一个先进后出的数据结构(用弹夹做一个例子,最先进的子弹最后被打出去)

 压:push

 弹:pop

package com.zking.Collection02.util;
/**
 * 目标:使用LinkedList实现堆栈功能
 * 特点:先进后出
 * @author Administrator
 *
 */
import java.util.LinkedList;
public class MyStack {
  //弹夹(LinkedList集合)
  private LinkedList lst = new LinkedList();
  /**
  * 压栈(装弹)
  * @param obj
  */
  public void push(Object obj) {
  lst.addFirst(obj);
  }
  /**
  * 出栈(开枪)
  * @return
  */
  public Object pop() {
  Object first = lst.getFirst();
  lst.removeFirst();
  return first;
  }
  public int size() {
  return lst.size();
  }
  public static void main(String[] args) {
  //初始化
  MyStack stack = new MyStack();
  //填充子弹
  stack.push("a");//第一粒  4
  stack.push("b");//第二粒  3
  stack.push("c");//.... 2
  stack.push("d");//第四粒  1
  stack.push("e");//第五粒  0
  while(stack.size()!=0) {
    Object val = stack.pop();
    System.out.println(val);
  }
  }
}

1. Set(用到了下面的HashSet类)

 1.1 特点:无序、对象不能重复

1)无序:元素的添加顺序和输出顺序不一致


2)唯一:不允许添加重复元素过滤了(被过滤了)


问题:元素是被覆盖还是被过滤了?

package com.zking.Collection02.util;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import com.zking.Collection02.entity.Student;
public class Demo1 {
  public static void main(String[] args) {
  //Set
  //1 特点:无序、对象不能重复
  //1)无序:元素的添加顺序和输出顺序不一致
  //2)唯一:不允许添加重复元素过滤了(被过滤了)
  //问题:元素是被覆盖还是被过滤了?
  /*Set<String> set = new HashSet<>();
  set.add("zs");
  set.add("ls");
  set.add("ww");
  set.forEach(System.out::println);*/
  Set<Student> set = new HashSet<>();
  set.add(new Student(1,"zs",100f));
  set.add(new Student(2,"ls",32f));
  set.add(new Student(3,"ww",33f));
  set.add(new Student(1,"zs",100f));
  //1)默认使用equals比较,Object类型是引用类型,默认比较的是内存地址
  //2)重写hashcode和equals方法,先比较hashcode值是否相同,在比较equals
  //2.1)hashcode值相同,则比较equals
  //2.2)hashcode值不相同,则不比较equals
  /*Student stu = new Student();
  stu.equals(null);*/
  //set.forEach(System.out::println);
  }
}

1.2 遍历

   1.2.1 foreach

   1.2.2 迭代器

//2.遍历
     //1) foreach
  for (Student student : set) {
    System.out.println(student);
  }
  System.out.println("-----------------------------------------");
     //2) iterator(迭代器)   
  //获取迭代器
  Iterator<Student> it = set.iterator();
  //循环遍历
  while(it.hasNext()) {
    System.out.println(it.next());
  }

1.3 常用实现类

     HashSet

     TreeSet:根据某种(规则)对里面的元素进行排序

package com.zking.Collection02.util;
import java.util.Set;
import java.util.TreeSet;
import com.zking.Collection02.entity.Student;
public class Demo2 {
  public static void main(String[] args) {
  //TreeSet:以某种特定的规则对集合中的元素进行排序(升序和降序)
  //java.lang.Comparable:自然比较接口
  //Java.lang.Comparator:比较器(推荐)
  /*  Set<String> set1 = new TreeSet<>();
  set1.add("zs");
  set1.add("ls");
  set1.add("ww");*/
  Set<Student> set = new TreeSet<>(new NameComparator());
  set.add(new Student(1,"zs",100f));
  set.add(new Student(2,"ls",32f));
  set.add(new Student(3,"ww",33f));
  set.forEach(System.out::println);
  }
}

自然比较接口: java.lang.Comparable

比较器: java.util.Comparator

String以AscII码进行比较,返回差值

LinkedHashSet:

 1)元素是有顺序的

 2)元素是不重复的

 3)底层数据结构是按照链表的结构存储的 Linked

相关文章
|
19天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
9天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
527 8
|
8天前
|
算法 Java
Java项目不使用框架如何实现限流?
Java项目不使用框架如何实现限流?
19 2
|
8天前
|
存储 安全 Java
Java 常用集合分类
Java 常用集合分类
13 2
|
14天前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
30 5
|
14天前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
31 5
|
1月前
|
Java 数据库连接 Apache
Java进阶-主流框架总结与详解
这些仅仅是 Java 众多框架中的一部分。每个框架都有其特定的用途和优势,了解并熟练运用这些框架,对于每一位 Java 开发者来说都至关重要。同时,选择合适框架的关键在于理解框架的设计哲学、核心功能及其在项目中的应用场景。随着技术的不断进步,这些框架也在不断更新和迭代以适应新的开发者需求。
39 1
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
2月前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。
下一篇
无影云桌面