Java集合框架——List的排序方式以及队列测试Queue

集合系列(一) -集合框架简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。 阅读详情

集合排序的两种方法:自然排序和定制排序
实现集合的自定义排序
自然排序:如果集合里面的元素想进行自然排序,那么要求集合里面元素的引用类型必须实现Comparable接口,重写compareTo方法
定制排序:不按照自然排序的方式排序,使用自定义的方式进行排序,可以实现Comparator接口,重写compare方法(临时指定的方法)

普通方法:

   /**
     * 测试普通排序,通过Collection.sort(list)集合工具去测试
     * 利用list.forEach(e->{})遍历
     */
    @Test
    public void m1(){
        List<Integer> ls = new ArrayList<>();
        ls.add(11);
        ls.add(78);
        ls.add(47);
        ls.add(42);
        ls.add(87);
        //ls[0];
        Collections.sort(ls);
        System.out.println("排序后的列表:");
        ls.forEach(e->{ System.out.print("  "+e); });
        System.out.println();
        //实现逆转
        System.out.println("逆转后:");
        Collections.reverse(ls);
        ls.forEach(e->{ System.out.print("  "+e); });
        //将列表转化成数组
//        Object[] obs=ls.toString();
        //List底层不是数组方式,所部不能利用[]
//        Object obs=ls.toString();
//        System.out.println(obs[0]);
    }

自然排序:

@Test
public void m2(){
    /**
     * 通过创建学生对象测试集合中的自然排序和定制排序
     */
    //自然排序
    //自然排序:如果集合里面的元素想
    // 进行自然排序,那么要求集合里面元素
    // 的引用类型必须实现Comparable接口,重写compareTo方法
    Student student1 = new Student("贾玲",30,"女");
    Student student2 = new Student("马丽",40,"女");
    Student student3  = new Student("Jack11111",28,"男");
    Student student4 = new Student("沈腾",33,"男");
    List<Student> students = new ArrayList<>();
    students.add(student1);
    students.add(student2);
    students.add(student3);
    students.add(student4);
    System.out.println("排序前:");
    students.forEach(e->{
        System.out.println(e);
    });
    //通过年龄升序学生集合
    System.out.println("排序后:");
    Collections.sort(students);
    students.forEach(e->{
        System.out.println(e);
    });
}

运行结果:

在这里插入图片描述

//测试定制方法:依据名字长度升序名字
@Test
public void m3(){
    Student student1 = new Student("贾玲42",30,"女");
    Student student2 = new Student("马丽32356",40,"女");
    Student student3  = new Student("Jack11111",28,"男");
    Student student4 = new Student("沈24腾",33,"男");
    List<Student> students = new ArrayList<>();
    students.add(student1);
    students.add(student2);
    students.add(student3);
    students.add(student4);
    /**
     * 开始临时定制方法
     */
    Collections.sort(students,(o1,o2)->{
        return o1.getSname().length()-o2.getSname().length();
    });
    students.forEach(e-> System.out.println(e));
}

队列测试Queue

    @Test
    public void m4(){
        Queue<String> queue = new LinkedList<>();
        //入队列
        queue.offer("mm");
        queue.offer("bb");
        queue.offer("nn");
        queue.offer("yy");
        //出队列
        //返回弹出队列的元素
        System.out.println("出栈的元素是:"+queue.poll());
        queue.forEach(e->{
            System.out.println(e);});
//        queue.forEach(e->{ queue.remove(e);});//会报错

    }

其中报错原因:不能边弹出边删除
在这里插入图片描述

JAVA集合和guava集合使用和原理解析 一:总体介绍: Java集合框架介绍 集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。 Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。 其中L... 阅读详情

相关推荐

Java零基础-集合:集合框架概述

Java是一种广泛使用的面向对象编程语言,具有简洁、可靠和安全的特性。在Java开发中,集合是一项重要的技术,用于存储和操作数据集合。本文将介绍Java集合框架的概述,包括其简介、应用场景案例、优缺点分析、类代码方法介绍等内容。Java集合框架是一组类和接口,用于存储和操作数据集合。它提供了各种类型的集合,如List、Set、Map等,以及用于循环遍历和操作集合的工具类。Java集合框架具有灵活、高效和类型安全的特性,是Java开发的重要组成部分。

喵手的博客 1281

java集合(Set、List、Queue)

本文详细讲述了java集合的知识,包括Collection接口,Iterator接口,Set集合,List集合......

weixin_57341232的博客 1844

火山引擎之火山方舟知识库+OpenWebUI,搭建独属于自己的AI智能客服

创建接入点,接入点名称可按个人需求而定,比如Doubao-1.5-pro-32k,在添加模型选择Doubao-1.5-pro-32k,点击确定(PS:有些模型不支持知识库,若发现后续无法选择,请重新创建推理接入点。选择应用广场,创建零代码应用,在创建好的应用设置内编辑相关信息,并选择推理接入点,即先前建好的推理接入点;此处的模型名称是火山的模型ID名称,可在OpenWebUI设置-模型 中修改名称。至此所需的apikey和模型ID和请求的api地址(可选配置,非本文重点参数)。进入火山官网,注册账号。

AmaZInGvCH的博客 2651

数据结构与算法 :队列与栈的操作以及Java中的List和Queue

这样原来非空的就变成了空队列了。---每次操作无论push还是pop均有一个队列是空的。把上面我分析的思路翻译成代码就是这样的。

m0_48922996的博客 729

IEEE论文接收后,收到Proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)

本文详细解析了IEEE论文接收后Proof校样的全流程,从邮件关键信息解码到精准修改标注,提供48小时内高效完成校样的实战指南。涵盖登录技巧、文件验证、修改标注黄金法则及九宫格检查清单,帮助作者避免常见错误,确保论文顺利发表。

weixin_30652491的博客 563

[XJTUSE DATABASE]——第三章 关系数据库标准语言SQL

新年了,来个大的,写了好几天,将近9000字,希望对大家有所帮助

weixin_47692652的博客 3120

JAVA:用数组和链表实现队列

JAVA:用数组和链表实现队列

weixin_58879477的博客 689

嵌入式开发中SAR与ΔΣ ADC选型指南:从原理到实战应用

模数转换器是嵌入式系统连接模拟世界与数字世界的核心接口,其选型直接决定了数据采集的精度与可靠性。SAR ADC采用逐次逼近原理,如同天平称重,通过二进制搜索快速完成转换,具备高速、多通道轮询的优势,适合电机控制、通信等动态场景。ΔΣ ADC则基于过采样与噪声整形技术,以速度换取精度,通过数字滤波输出高分辨率结果,在传感器测量、音频采集等静态高精度领域表现卓越。理解这两种架构的工作原理差异,是进行嵌入式ADC选型的基础。在实际工程中,需结合信号带宽、多通道切换需求、功耗约束及PCB布局能力进行综合权衡。例如,

weixin_30140399的博客 244

【数据结构与算法】List接口&栈&队列

List 接口继承自 Collection 接口,其中定义了一个用于顺序存储元素的合集,我们可以使用它的两个具体类 ArrayList 或者 LinkedList 来创建一个线性表

一以贯之的努力 不得懈怠的人生 754

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 547

CANoe诊断测试避坑指南:DTC故障注入与ECU刷写失败的N个常见原因排查

本文深入解析CANoe诊断测试中的常见问题,重点探讨DTC故障注入与ECU刷写失败的排查策略。从会话管理、安全访问到数据完整性校验,提供实战经验与CAPL脚本示例,帮助工程师规避诊断测试中的典型陷阱,提升车载网络通信与ECU刷写的可靠性。

weixin_29278805的博客 461

Java核心编程之ArrayList(实现队列)

【代码】Java核心编程之ArrayList(实现队列)

qq_53355797的博客 584

Jetson AGX Orin平台Jetpack5升级Jetpack6,自研载板USB不工作问题调试

1. 问题描述将AGX Orin工业的新板放到定制的载板上当在ubuntu 22和Jetpack 6.1上使用SDKManager刷机时,lsusb为空,并且在引导时没有发现/注册xusb设备。USB C端口正常打开并供电,但似乎没有数据传输。在Ubuntu 18 Jetpack 5.1.4 SDKManager上同样刷机之后,usb C集线器在引导时被正确地发现,显示在lsusb中,并识别/挂载外部驱动器。

jzwjzw19900922的博客 1509

Java基础知识第三讲:深入集合类(常用的集合类有哪些?比如List如何排序?集合的安全?)

1、collections框架(包括列表list,queue队列,set集合,stack栈,map键值对) 提供排序,查找,反转,替换,复制,取最小,最大元素等功能 1.1、set 元素不能重复,使用equals确保对象一致性—&gt;实现类hashset treeset(有序) 只能通过迭代器(Iterator)来遍历元素 方法:add、contains、remove、clear ...

Jet_qi的博客 3227

YOLO26涨点改进 | 损失函数改进篇 | 引入SlideLoss,适配尺度变化+遮挡+难易样本不平衡,手把手配置+实战案例

COCO-Hard是COCO数据集的复杂场景子集,包含80个类别,重点筛选多尺度、遮挡密集样本,其中小尺度目标(<32×32像素)占比42%,大尺度目标(>128×128像素)占比28%,遮挡目标占比57%,场景涵盖人群密集、车流拥堵、复杂工业环境,完美模拟真实复杂检测场景,适合验证SlideLoss的适配性。

qq_36130719的博客 157

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java集合(Collection接口下的 List、Set 深入理解)

什么是java集合? 1、java集合大致分为Set、List、Queue、Map四种体系。      Set表示无序、不可重复的集合;      List代表有序重复的集合;      Map代表具有映射关系的集合;      Queue代表一种队列集合。 2、java集合就像一个容器,可以把多个对象(实际上是对象的引用,习惯都称之为对象)“丢进”该容器中。 3、java集合可以记住

暖心~的博客 5280

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java集合框架图(一)

Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。

专注自动化、性能测试、测试架构学习交流 2469

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等

集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等

hutao8896的博客 1357

Java的集合框架理解

一.集合框架主要接口 No 接口 说明 1 Collection Collection 是层次结构 中的根接口。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。 2 List Collection接口的 3 Set Collectio...

bo123_的博客 482

Java 集合详解

java中集合使用详解

精神小牛马 1760

java集合框架

详谈java集合框架

w2537376648的博客 217

Java集合框架简介

文章目录一、Collection接口和Map接口1.Collection接口(1)List(2)Set(3)Queue2.Map接口二、Iterator接口三、RandomAccess接口 Java集合框架具有高性能、高效的特点,并允许不同类型的集合,以相似的方式来操作,同时也提供了标准接口来实现扩展。 Java集合框架为不同类型的集合提供了大量接口,可以这么说整个集合框架就围绕着这一组标准接口而设计。 集合框架有两个基本接口:Collection和Map,此外还有一个迭代器接口:Iterator,及一个

Levi_moon的博客 442

Java集合框架详解

Java集合框架(Java Collections Framework)是一组用于存储和操作对象组的数据结构和算法的统一架构。它提供了丰富的数据结构实现,如列表(List)、集合(Set)、队列(Queue)和映射(Map)等。集合框架的主要优点提高代码复用性:提供了标准化的数据结构和算法提高代码质量:经过严格测试,性能优异降低学习成本:统一的API设计,学习一次即可掌握多种数据结构提高开发效率:开箱即用,无需从零实现Collection// 基本操作int size();

一个程序员 1471

【数据结构前置知识】集合框架

Java集合框架是为解决传统数组局限性而设计的统一体系结构,主要包含Collection和Map两大接口体系。Collection包含List(有序可重复,如ArrayList、LinkedList)、Set(无序不重复,如HashSet、TreeSet)和Queue(队列);Map存储键值对(如HashMap、TreeMap)。该框架通过预定义接口和实现类,提供动态扩容、丰富操作和标准数据结构,支持面向接口编程以提高灵活性和维护性,减少了开发者自行实现数据结构的负担。

2301_79816047的博客 1005

Java集合类详解

如果您喜欢这些文章,欢迎点击此处订阅本Blog<!--google_ad_client = "pub-7343546549496470";/* 728x90, 大横幅正文上方 */google_ad_slot = "4725362798";google_ad_width = 728;google_ad_height = 90;// -->

小李专栏 23万+
上一篇: Java集合框架基础——ArrayList
下一篇: Map集合的使用
惠溪崽崽
博客等级 码龄7年 4粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值