day33 List接口

List实现类

 java.util.ArrayList:  底层通过数组保存数据 , 查询快,增删慢
 java.util.LinkedList: 底层通过链表保存数据,  查询慢,增删快
 如果对操作性能没有特殊要求,我们一般选择ArrayList即可,同时考虑具体业务
 


List方法 

List<String> link = new LinkedList<>();
link.add("1");
link.get(2);
link.set(0,"一");
Collections.reverse(link);  //自动反转
for (int i = 0; i < link.size() / 2; i++) {String tem = link.get(i);link.set(i, link.get(link.size()-1-i));link.set(link.size()-1-i,tem);
}
System.out.println(link);  //自动反转方法二

 List<Integer> subList = list.subList(3, 8);  //截取集合中的子集(含头不含尾)

集合  数组 的转换

    集合转换成数组

 Collection<String> c = new ArrayList<>();

 Collection提供了将集合转换成数组的方法

  Object[] objects = c.toArray();

ArrayList重载了一个toArray方法

String[] sts = c.toArray(new String[c.size()]);

  数组转换成集合

java.util.Arrays提供了一个静态方法:asList,可以将数组转换成集合

String[] arr = {"one", "two", "three", "four", "five", "six"};

  List<String> list = Arrays.asList(arr);

list.set(2,"二");  //这里会直接报错
System.out.println(list); //打印集合
System.out.println(Arrays.toString(arr));  //打印数组元素
//因为数组是定长的,因此该集合的增删元素都会抛出 UnsupportedOperationException异常
//对集合的操作就是对原数组的操作
//操作数组转换的集合 会改变数组本身 
还有sublist截取的集合子集进行增删也一样会改变集合

如果必须要增删元素,需要自行创建一个新的集合
    所有集合都支持一个参数为Collection的构造函数,

   作用是在创建当前集合的 同时包含指定集合中的所有元素

   
        List<String> list2 = new ArrayList<>(list);

         //创建list2集合的同时包含list集合中的所有元素
 

 

集合的排序

java.utils.Collections提供了一个静态方法,short()

可以对集合进行自然排序(升序,从小到大)

  Collections.sort(list);

自定义排序   Collections.sort(List list)

该方法要求集合元素必须实现接口:Comparable,否则编译不通过。
         * Comparable接口是用来表示实现类是可以比较大小的,

                实现类必须重写方法compareTo
         * compareTo用来定义两个实例比较大小的规则。
         * 例如:包装类, String类等都实现了这个接口
         *
         * 如果该方法不能直接使用,就不建议使用了,因为该方法对我们的代码产生了侵入性。
         * 侵入性:当我们使用某个API时,其要求我们为其更改其他地方的代码,这就是侵入性。
         * 侵入性不利于后期代码维护,应当尽力避免。 侵入性也大大提高了代码的耦合度,违背了
         * 代码“高内聚,低耦合”的原则

自定义排序二

//COllections下的sort方法要想使用必须// 在元素中实现comparable接口//comparable接口是用来表示实现类可以比较大小//实现类必须重写方法//compareTo定义比较大下的规则//Collections重载了short方法//sort(List,Comparator)//需要传入一个比较器对象
//        Comparator<Point> c = new Comparator<Point>() {
//            @Override
//            public int compare(Point o1, Point o2) {
//                int m1 = o1.getX()*o1.getX() + o1.getY()*o1.getY();
//                int m2 = o2.getX()*o2.getX() + o2.getY()*o2.getY();
//                return m1-m2;
//            }
//        };
//        Collections.sort(l,c);//        Collections.sort(l,
//            ( o1, o2) -> (o1.getX()*o1.getX() + o1.getY()*o1.getY())-(o2.getX()*o2.getX() + o2.getY()*o2.getY())
//        );

 


lambda表达式排序集合 

        List<String> list = new ArrayList<>();

        list.add("杨玉捷");
        list.add("博文");
        list.add("殷桃小丸子");
        list.add("西门长海");

  Collections.sort(list,(s1,s2)->s1.length()-s2.length());

 栈内存结构

Stack继承自Vector


 * 特点: 先进后出,后进先出
 * 入栈/压栈 ----数据进入栈
 * 出栈/弹栈-----数据离开栈
 * 栈顶元素------最后放入栈中的元素
 * 栈底元素------最先放入栈中的元素

Stack s = new Stack();
s.push("a");
s.push("b");
s.push("c");
s.push("d");
s.empty();  //是否为空栈
s.pop();  //peek()并删除
s.peek(); //获取栈顶元素
System.out.println(s);
s.search("a");  //从栈顶往下数  1开始

用双端队列表示栈

Deque d= new LinkedList();
d.add("a");
d.add("b");
d.add("c");
d.add("d");d.pop();
d.peek();

Vector

Vector<String> v = new Vector();
System.out.println(v);
System.out.println(v.size());
System.out.println(  v.capacity());//初始容量 10 三目运算符 自动扩容
Enumeration<String> elements = v.elements();
while (elements.hasMoreElements()){String s = elements.nextElement();System.out.println(s);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣每日一题】2023.9.7 修车的最少时间

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个数值&#xff0c;数组里每个元素表示一个老师傅&#xff0c;老师傅修车花费的时间等于数值乘上车辆数的平方。 问我们修理…

vue中使用tailwindcss

Tailwind CSS with Vue tailwindcss官方文档 创建Vue项目 npm create vitelatest my-project -- --template vue cd my-project安装Tailwind CSS&#xff0c;创建tailwind.config.js和postcss.config.js npm install -D tailwindcss postcss autoprefixer npx tailwindcss …

编程语言排行榜

以下是2023年的编程语言排行榜&#xff08;按照流行度排序&#xff09;&#xff1a; Python&#xff1a;Python一直以来都是非常受欢迎的编程语言&#xff0c;它简洁、易读且功能强大。在数据科学、机器学习、人工智能等领域有广泛应用。 JavaScript&#xff1a;作为前端开发…

你不知道的JavaScript---对象

1.语法 对象可以通过两种方式定义&#xff1a;一种是对象字面量形式&#xff0c;一种是构造形式 对象字面量&#xff1a; var muObject {key: value }构造形式的&#xff1a; var myObject new Object() myObject.key value不管是使用对象字面量形式还是构造形式创建出来…

idea:java: Compilation failed: internal java compiler error

java: Compilation failed: internal java compiler error错误 检查下面2个即可&#xff1a;

docker 生成镜像的几个问题

docker 生成镜像的几个问题 根据jdk8.tar.gz 打包Jdk8 镜像失败运行镜像报错差不多是网络ip错误,在网上说重启docker即可解决运行mysql5.7.25 镜像失败向daemon.json文件添加内容导致docker重启失败docker run 命令常用参数根据jdk8.tar.gz 打包Jdk8 镜像失败 首选做准备工作…

卡牌类游戏推荐,卡牌类三国手游排行榜

以下是小编要推荐给大家的关于卡牌类三国手游排行榜的内容。这里有来自各个历史阶段的名将和美女&#xff0c;让你体验最真实的三国战役。你可以将各种战略思维运用到其中&#xff0c;感受步步为营的喜悦&#xff0c;最终赢得战火纷飞的三国&#xff0c;如果想了解每个游戏的具…

浅谈安科瑞ADL200仪表在爱尔兰工厂的应用

摘要&#xff1a;用户端消耗着整个电网80%的电能&#xff0c;用户端智能化用电管理对用户可靠、安全、节约用电有十分重要的意义。构建智能用电服务体系&#xff0c;推广用户端智能多功能仪表、智能用电管理终端等设备用电管理解决方案&#xff0c;实现电网与用户的双向良性互动…

失效的访问控制及漏洞复现

文章目录 渗透测试漏洞原理失效的访问控制1. 失效的访问控制1.1 OWASP TOP 101.1.1 A5:2017-Broken Access Control1.1.2 A01:2021-Broken Access Control 1.2 失效的访问控制类别1.2.1 水平越权1.2.2 垂直越权 1.3 攻防案例1.3.1 DVWA越权 1.4 相关漏洞1.4.1 目录遍历1.4.2 未…

【Redis】Bitmap 使用及应用场景

前言&#xff1a;bitmap 占用空间小&#xff0c;查询效率高&#xff0c;在一些场景中使用 bitmap 是一个很好的选择。 一、bitmap 相关命令 SETBIT - 设置指定位置的比特值&#xff0c;可以设为 1 或 0 例如 SETBIT key 10 1&#xff0c;将在 key 对应的 bitmap 中第10位设置为…

explain 实战-----查看hive sql执行计划

目录 1.join/left join/full join 语句会过滤关联字段 null 的值吗&#xff1f; &#xff08;1&#xff09;join &#xff08;2&#xff09; left join /full join 2.group by 分组语句会进行排序吗&#xff1f; 1.join/left join/full join 语句会过滤关联字段 null 的值吗…

【java】【SSM框架系列】【一】Spring

目录 一、简介 1.1 为什么学 1.2 学什么 1.3 怎么学 1.4 初识Spring 1.5 Spring发展史 1.6 Spring Framework系统架构图 1.7 Spring Framework学习线路 二、核心概念&#xff08;IoC/DI&#xff0c;IoC容器&#xff0c;Bean&#xff09; 2.1 概念 2.2 IoC入门案例 …

docker安装RabbitMQ教程

可以通过Docker来安装RabbitMQ&#xff0c;具体步骤如下&#xff1a; 安装Docker&#xff1a;请参考官方文档进行安装。 拉取RabbitMQ镜像&#xff1a;通过以下命令拉取最新版本的RabbitMQ镜像。 docker pull rabbitmq:latest运行RabbitMQ容器&#xff1a;通过以下命令运行Rab…

简单YUV数据转换

YUV是一种亮度信号Y和色度信号U、V是分离的色彩空间&#xff0c;它主要用于优化彩色视频信号的传输&#xff0c;使其向后相容老式黑白电视。其中“Y”表示明亮度&#xff08;Luminance或Luma&#xff09;&#xff0c;也就是灰阶值&#xff1b;而“U”和“V”表示的则是色度&…

vue3 defineExpose 显示的指定组件需要暴露的属性

简介&#xff1a; 是 vue3 新增的一个 api &#xff0c;用在 <script setup>中使用&#xff0c;用于显示的把组件的属性和方法暴露出来。可用于父子组件通信&#xff0c;子组件使用 defineExpose 将自身的方法或者属性暴露出去&#xff0c;父组件中通过 ref 获取子组件 D…

Android12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)第二种方法

1.概述 在12.0的系统产品开发中,在6.0以后对于权限的申请,都需要动态申请,所以会在系统首次启动后,在app的首次运行时,会弹出授权窗口,会让用户手动授予app运行时权限,在由于系统产品开发需要要求默认授予app运行时权限,不需要用户默认授予运行时弹窗,所以需要在首次开…

CH06_第一组重构(上)

提取函数&#xff08;Extract Function |106&#xff09; 曾用名&#xff1a;提炼函数&#xff08;Extract Function&#xff09; 反向重构&#xff1a;内联函数&#xff08;115&#xff09; 示例代码 function printOwing(invoice) {printBanner();let outstanding calcul…

API安全学习 - crAPI漏洞靶场与API测试思路

crAPI漏洞靶场与解题思路 1. 前置基础1.1 认识crAPI1.2 环境搭建1.3 API的分类与鉴别 2. 漏洞验证2.1 失效的对象级别授权挑战1&#xff1a;访问其它用户车辆的详细信息挑战2&#xff1a;访问其它用户的机械报告 2.2 失效的用户身份验证挑战3&#xff1a;重置其它用户的密码 2.…

NIFI实现JSON转SQL并插入到数据库表中

说明 本文中的NIFI是使用docker进行安装的&#xff0c;所有的配置参考&#xff1a;docker安装Apache NIFI 需求背景 现在有一个文件&#xff0c;里面存储的是一些json格式的数据&#xff0c;要求将文件中的数据存入数据库表中&#xff0c;以下是一些模拟的数据和对应的数据库…

centos7使用docker-compose一键搭建mysql高可用主从集群

docker部署 环境准备 卸载旧版本 yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine 安装依赖 yum install -y yum-utils \…