J2EE&集合框架&Set

这篇具有很好参考价值的文章主要介绍了J2EE&集合框架&Set。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.Set特点

特点:无序,不重复

思考:如果对List容器中的元素去重?

二.遍历:foreach,迭代器

三.扩容: 初始容量16,负载因子0.75,扩容增量1倍

性能参数:初始容量,负载因子

默认值: 初始容量16,负载因子0.75

示例:new HashSet<>(20, 0.5f);

四.HashSet

五.思考

1. 如何给ArrayList集合去重

      @Before    public void setup() {        list.add(1);        list.add(2);        list.add(3);        list.add(3);        list.add(4);        list.add(5);        list.add(3);        list.add(4);        //list.add(3);    }

    //去重复    @Test    public void test05() {                HashSet ll = new ArrayList (new  HashSet(list));            ll.forEach(t->System.out.println(t));    }

2. set有ArrayList中存在的通过下标删除,或foreach循环删除时的问题吗? 为什么

答:set无下标  所有没有

3. set是否存在List删除,传入整数需要区分是基本型还是对象型的问题,【例如:list.remove(2)】,为什么? 

答:存在 基本型的整数

六.TreeSet

示例:

 自定义比较器

①通过构造函数传入比较器

②实现排序接口文章来源地址https://www.toymoban.com/news/detail-545100.html


一.Set特点

特点:无序,不重复

思考:如果对List容器中的元素去重?

  
    @Before
    public void setup() {
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(3);
        list.add(4);
        //list.add(3);
    }

    //去重复
    @Test
    public void test05() {
        
        HashSet<Integer> ll = new HashSet<Integer>(list);
    
        ll.forEach(t->System.out.println(t));
    }
    
 

二.遍历:foreach,迭代器

//遍历方式
    @Test
    public void test06() {
        Set<Integer> set = new HashSet<>();//里氏替换原则
        set.add(3);
        set.add(2);
        set.add(1);
        //foreach
        for (Integer i : set) {
            System.out.println(i);
        }
       //迭代器
        Iterator<Integer> it = set.iterator();
        while(it.hasNext()) {
            Integer n =it.next();
            System.out.println(n);
        }
    
    }

三.扩容: 初始容量16,负载因子0.75,扩容增量1倍

性能参数:初始容量,负载因子

默认值: 初始容量16,负载因子0.75

示例:new HashSet<>(20, 0.5f);

四.HashSet

  1. 它存储唯一元素并允许空值  依据对象的hashcode来确定该元素是否存在
  2. 由HashMap支持
  3. 不保持插入顺序
  4. 非线程安全

五.思考

1. 如何给ArrayList集合去重

  
    @Before
    public void setup() {
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(3);
        list.add(4);
        //list.add(3);
    }

    //去重复
    @Test
    public void test05() {
        
        HashSet<Integer> ll = new ArrayList<Integer> (new  HashSet<Integer>(list));
    
        ll.forEach(t->System.out.println(t));
    }

2. set有ArrayList中存在的通过下标删除,或foreach循环删除时的问题吗? 为什么

答:set无下标  所有没有

3. set是否存在List删除,传入整数需要区分是基本型还是对象型的问题,【例如:list.remove(2)】,为什么? 

答:存在 基本型的整数

六.TreeSet

  • 是一个包含有序的且没有重复元素的集合
  • 作用是提供有序的Set集合,自然排序或者根据提供的Comparator进行排序
  • TreeSet是基于TreeMap实现的

示例:

//TreeMap
    @Test
    public void test07() {
        //回调函数
        TreeSet<Integer> ts = new TreeSet<>(
            //匿名类
            new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    //降序
                    return o2-o1;
                }
            }
                );

        //测试数据
        ts.add(1);
        ts.add(3);
        ts.add(4);
        ts.add(5);
        ts.add(6);
        ts.add(8);
        ts.add(2);

        //1. 默认自然排序
        for(Integer e: ts) {
            System.out.println(e);
        }
        
    }
 

 自定义比较器

①通过构造函数传入比较器

TreeSet<Integer> tset = new TreeSet<Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // TODO Auto-generated method stub
                return o2 - o1;
            }
        });

②实现排序接口

public class Student implements Comparable<Student>{
    
    private Integer sid;
    
    private String name;
    
    private int age;
    
    //构造函数,getter,setter,hashCode,equals等方法省略
    
    @Override
    public int compareTo(Student o) {
        // TODO Auto-generated method stub
        return o.getAge() - this.getAge();
    }

}

到了这里,关于J2EE&集合框架&Set的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • J2EE&反射

    目录 一.什么是反射        用实体类Student做示范 三.反射实例化 四.反射动态方法调用 五.反射读写属性 反射java语言中的一种机制,通过这种机制可以动态的实例化对象,读写属性,调用方法 二.类类 Class.forName(完整类名) 类名 .class 对象 .getClass        用实体类Student做示范

    2024年02月16日
    浏览(43)
  • J2EE&XML建模

    目录 用一个xml-config文件实例: 先看config.xml文件 再看 ActionModel ConfigModel ActionNotFoundException ForwardNotFoundException ConfigModelFactory ActionDuplicateDefinitionException ForwardDuplicateDefinitionException InvalidPathException 用一个xml-config文件实例:  ActionModel ConfigModel ForwardModel      ActionNotFoundExcepti

    2024年02月16日
    浏览(34)
  • J2EE&通用分页02

    目录 一.重构-提取公用方法            1.为了进行公共方法的抽取,需要找出上面实习中的可通用部分,和差异化部分     2.公用方法封装思路       3. 具体实现 二.分页标签 2.1 准备一个Servlet  3.2 结果展示页面 三. 过滤器解决中文乱码问题 四.加入分页功能 四.封装分

    2024年02月15日
    浏览(42)
  • J2EE项目部署与发布(Windows版本)

    目录 一、会议OA单体项目Windows部署 1.1 数据测试 1.2 项目部署 1.3 报错解决 1.4 最终效果 二、spa前后端分离项目Windows部署 2.1 后端代码测试 2.2 前端代码测试 2.3 项目部署 2.3.1 数据导入 2.3.2 后端部署 2.3.3 前端部署 2.3.3.1 Node.js环境配置 2.3.4 端口问题解决 2.3.4.1 method1 2.3.4.2 meth

    2024年02月07日
    浏览(44)
  • J2EE项目部署与发布(Linux版本)

    目录 一.jdktomcat安装 1.jdk的安装  1.2解压对应的安装包 1.3配置环境变量  2.tomcat的安装  二.mysql的安装 三.后端接口部署  后端部署 导入war包 修改端口  开启访问 1.jdk的安装 登录VMware Workstation Pro 然后连接MobaXterm      将 jdk tomcat mysql 导入到MobaXterm   1.2解压对应的安装包  

    2024年02月06日
    浏览(33)
  • 虚拟机部署与发布J2EE项目(Linux版本)

                                                      🎬 艳艳耶✌️:个人主页                                                   🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》                                                     ⛺️ 越努力 ,越幸

    2024年02月06日
    浏览(44)
  • J2EE,Java EE,Jakarta EE 命名之间的恩恩怨怨

      简单来说,上面所有的名字指的都是一个东西 Java Platform, Enterprise Edition 上面的几个名词都是下面的内容的简写: J2EE(Java 2 Platform, Enterprise Edition) Java EE (Java Platform, Enterprise Edition) Jakarta EE(Jakarta Enterprise Edition) 上面的排序是按照时间演进来进行排序。   1998年12月,SUN公司发

    2023年04月26日
    浏览(40)
  • 14天学会:基于J2EE的JAVA WEB基础

    手把手教你:基于Django的新闻文本分类可视化系统(文本分类由bert实现) 手把手教你:基于python的文本分类(sklearn-决策树和随机森林实现) 手把手教你:岩石样本智能识别系统 本文通过一个14天的学习文档教会大家学会 基于J2EE的JAVA WEB基础 本次上传的资源比较大,因此分

    2024年02月15日
    浏览(55)
  • 小研究 - J2EE 应用服务器的软件老化测试研究

    软件老化现象是影响软件可靠性的重要因素,长期运行的软件系统存在软件老化现象,这将影响整个业务系统的正常运行,给企事业单位带来无可估量的经济损失。软件老化出现的主要原因是操作系统资源消耗殆尽,导致应用系统的性能下降甚至崩溃或宕机。文中监测J2EE 应

    2024年02月11日
    浏览(37)
  • 【Linux】虚拟机部署与发布J2EE项目(Windows版本)

    跨平台性:Java虚拟机(JVM)提供了一个中间层,使得Java应用程序可以在不同的操作系统上运行,无需进行代码修改。这意味着您可以使用一套Java代码,在不同的硬件和操作系统上部署和运行应用程序。 安全性:Java虚拟机提供了安全管理机制,可以对Java应用程序的执行过程

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包