Java集合——泛型

Java入门4: 泛型和集合 Java泛型和集合用法介绍及案例(附代码) 阅读详情
  • Java泛型是jdk1.5中引入的新特性,本质是参数化类型,把类型作为参数传递
  • 常见形式有泛型类、泛型接口、泛型方法
  • 语法
    • <T,…> T成为类型占位符,表示一种引用类型
  • 好处
    • (1) 提高代码重用性
    • (2) 防止类型转换异常,提高代码安全性

一、泛型类

创建泛型类:

package List;


/**
 * 泛型类
 * 语法,类名<T>
 * T是类型占位符,表示一种引用类型,如果编写多个,使用逗号隔开
 */

public class MyGeneric<T> {
    //使用泛型T
    //1、创建变量
    T t;

    //2、T作为方法的参数
    public void show(T t){
        System.out.println(t);
    }

    //3、泛型作为方法的返回值
    public T getT(){
        return t;
    }
}

使用泛型类:

package List;

public class TestGeneric {
    public static void main(String[] args) {
        //使用泛型类创建对象
        //注意:1、泛型只能是引用类型  2、不同类型的泛型对象,不能相互赋值

        // T为 String 类型
        MyGeneric<String> myGeneric = new MyGeneric<String>();
        myGeneric.t = "hello";
        myGeneric.show("大家好"); //大家好
        String string = myGeneric.getT();

        // T为 Integer 类型
        MyGeneric<Integer> myGeneric2 = new MyGeneric<Integer>();
        myGeneric2.t = 2;
        myGeneric2.show(100); // 100
        Integer integer = myGeneric2.getT();

    }
}

二、泛型接口

创建泛型接口:

package List;

/**
 * 泛型接口
 * 语法:接口名<T>
 * 注意:不能创建泛型静态常量
 */

public interface MyInterface<T> {
    String name = "张三";

    T server(T t);
}

1、第一种实现类:在实现接口时就定义了实现的类型

package List;

public class MyInterfaceImpl implements MyInterface<String>{

    @Override
    public String server(String s) {
        System.out.println(s);
        return s;
    }
}

使用这种实现类:

MyInterfaceImpl impl1 = new MyInterfaceImpl();
impl1.server("接口实现类输出");

2、第二种实现类:实现类仍为泛型

package List;

/**
 * 实现接口时仍不确定 T 的具体类型,实现类仍是泛型类
 * @param <T>
 */
public class MyInterfaceImpl2<T> implements MyInterface<T>{

    @Override
    public T server(T t) {
        System.out.println(t);
        return t;
    }
}

使用这种实现类:

MyInterfaceImpl2<Integer> impl2 = new MyInterfaceImpl2<Integer>();
impl2.server(2);

三、泛型方法

创建泛型方法:

package List;

/**
 * 泛型方法
 * 语法:<T> 返回值类型
 */

public class MyGenericMethod {

    //泛型方法
    public <T> T show(T t){
        System.out.println("泛型方法"+ t);
        return t;
    }
}

泛型方法使用:

MyGenericMethod myGenericMethod = new MyGenericMethod();
 //里面传的这个值不用定义类型,直接传值即可,代码会自动判断T的类型
 myGenericMethod.show("中国加油");
 myGenericMethod.show(10000);
 myGenericMethod.show(13.1415);

四、泛型集合

概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致

特点:

  • 编译时即可检查,而非运行时抛出异常
  • 访问时,不必类型转换(拆箱)
  • 不同泛型之间应用不能相互赋值,泛型不存在多态

(一)创建一个普通的集合

public static void main(String[] args) {
        ArrayList arrayList = new ArrayList<>();
        arrayList.add("aaa");
        arrayList.add("bbb");
        arrayList.add(100);
        arrayList.add(2);

        for (Object object:arrayList) {
            String str = (String) object;
            System.out.println(str);
        }
    }

我们可以看到,arrayList中的元素默认为object,它们有integer类型,也有string类型,我们试图将它们强制转换为string类型,那么就会出现错误:( Integer无法强转为string类型 )

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
	at List.demo2.main(demo2.java:14)

(二)创建泛型集合
创建集合时,就将其定义为String类型,则集合中的元素都是String类型

public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("aaa");
        arrayList.add("bbb");

        for (String str:arrayList) {
            System.out.println(str);
        }
    }
SAP License:SAP会计凭证抬头的字段状态控制 FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家.. 阅读详情

相关推荐

小红书UID泄露风险揭秘:如何防止你的手机号被社工库关联(附防护指南)

本文揭示了小红书UID泄露的严重风险,详细解析了UID与手机号关联后被社工库利用的完整链条。通过分析黑产的数据整合技术,提供从基础到进阶的防护策略,包括密码管理、账号隔离和应急响应措施,帮助用户有效防范个人信息泄露风险。

ol789012345的博客 1514

java集合 — — 泛型

三、泛型 3.1、泛型概述 在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。 提示:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。 3.2、泛型的定义和使用 我们在集合中会大呈使用到泛型,这里来完整地学习泛型知识。 泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。 3.2.1、定义和使用含有泛型的类 定义格式:

mocoll的博客 1185

【DDSCAT——离散偶极近似仿真程序05】模型设计Matlab代码:多核壳球 、多核壳圆柱

简洁明了,后面及部分给出的都是模型设计的Matlab代码,这些代码都来自于一篇文章:Chin C W S. Localized Surface Plasmon Resonance with the use of Silver and Titanium Oxide Nanostructures[J]. 2011. 一、设计多个核壳球形结构 1)Matlab代码 ...

XD_Yangf的博客 4260

Java集合学习:泛型

Java泛型

qq_59212867的博客 769

Unity3D 2022版如何一键安装Newtonsoft.Json?最新Package Manager教程

本文详细介绍了在Unity3D 2022及以上版本中,如何通过Package Manager一键安装和配置Newtonsoft.Json(Json.NET)。教程涵盖了从打开Package Manager、搜索并安装正确包源,到验证安装和基础使用的完整流程,旨在帮助开发者以现代化、可靠的方式集成这一强大的JSON处理框架,提升开发效率并规避手动导入的常见问题。

lg888的博客 921

详解【异质图卷积网络 RGCN】回顾:图神经网络问题的三大处理步骤 | 从起源说起,RGCN核心公式解释,两种降低模型参数量/优化的方式,附核心代码实现讲解

本篇,我们深入分析和学习RGCN的原理以及为何要这么做。首先让我们来回顾对于图神经网络问题的三大处理步骤,可以说,这是该深度学习模型的基本理解,后续都是在深化其中的细节处理。然后以容易理解的方式,引出异质图卷积网络RGCN的由来,主要讲解其核心公式和论文中作者所提出的两种降低模型参数量/优化的处理办法,并给出基础分解以及块对角分解的核心实现代码讲解。最后附上RGCN源代码及说明。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1280

JAVA基础(集合进阶) —— 泛型

泛型、泛型类、泛型方法、泛型接口以及 泛型的继承和通配符

hdakj22的博客 1262

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 432

Java集合-泛型

1、Array(数组)、ArrayList和LinkedList的区别 Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据,(因为删除数据以后, 需要把后面所有的数据前移)。缺点:数组初始化必须指定初始化的长度, 否则报错。 例如: int[] a = new int[4];//推荐使用int[] 这种方式初始化 ​ int

Philanderers的博客 1443

18、AI在基础设施管理与运维中的应用及未来趋势

本文探讨了人工智能(AI)在基础设施管理和运维中的广泛应用,包括性能优化、成本节约、网络安全等多个场景。文章详细介绍了AI在不同领域的应用工具、实际案例以及面临的挑战,并展望了未来AI在基础设施管理中的发展趋势。此外,还分析了AI与Site Reliability Engineering(SRE)框架的结合优势,展示了AI如何提升运维效率和系统可靠性。

n7o8p的博客 148

高速特征金字塔多角度旋转模板匹配(工业零部件缺陷检测C++ Opencv版)

博主在性能较好的笔记本上测试算法全部执行效果大约为45ms,在一般配置的笔记本上博主在性能较好的笔记本上测试算法全部执行效果大约为130ms。下图即为实际检测效果。本文最后附有完整代码:Qt版和MFC版本(可直接运行)。...

认真努力,做一只会飞的毛毛虫。 5547

Java ------- 集合与泛型

集合(Collection)和泛型(Generics)是java编程中常用的概念。这两个概念在许多编程语言中都有应用,如C#、C++等。1. 集合:集合是一个可以存储多个元素的数据结构。集合中的元素可以是任意类型,包括基本类型、对象、甚至是其他集合。集合的主要功能是存储和管理数据,提供对数据的添加、删除、查询等操作。在Java中,集合类主要包括List、Set、Map等。2. 泛型:泛型是一种在编程语言中实现参数化类型的工具。

weixin_53762659的博客 786

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java泛型详解:Java泛型集合、泛型类、泛型方法、泛型的使用

在 Java 1.5 之前没有泛型,通常需要使用强制类型转换的方式将一种数据类型转换为另一种数据类型,这种转换要求开发者对实际参数的类型具有可预知性。对于强制类型转换错误的情况,编译器可能不会提示错误,但是在运行时会出现异常,这是一个安全隐患。 为了解决这一隐患,从 Java 1.5 开始提供了泛型。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。本节将详...

jijiangpeng的博客 7444

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java的泛型与集合

本文章是博主学习了Java的泛型与集合之后的一个学习总结或笔记,欢迎各位小伙伴学习、讨论和交流。

weixin_45977237的博客 915

深度学习工具包 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泛型 01-泛型的引入 定义:是用泛型可以指代任意对象类型 引用泛型的作用:简化向上转型和向下转型 //泛型类要+<>,<>内的字母可以随意,但是一般都是用T(type) public class test<T> { private T ob; public T getob() { return ob; } public void setob(T ob) { this.ob=ob;

嘤嘤鸭的博客 256

Java中集合的泛型指定及泛型的自定义

关于jdk5.0之后的新特性:泛型机制 泛型这种语法机制,只是在程序编译阶段给编译器看的,运行阶段不起作用。 泛型在集合中的作用: 当用集合中使用泛型指定之后,说明该集合只能存储这种类型的元素,当你想存储其他元素的时候,编译器会报错。 为什么在集合中使用泛型? 因为大多数情况下,我们只会在集合中存储同一类型的对象。 测试代码: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class

pipizhen_的博客 1942

Java的集合框架和泛型

Java 集合框架,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储store、检索retrieve、管理manipulate,即平时我们俗称的增删查改CRUD。数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。

2302_77179144的博客 1179

java泛型集合list_java泛型,泛型集合详解

泛型是从Java 1.5就开始提供了的,那么下面的文章内容,就要重点的来给大家讲解一下java泛型,主要就是要介绍泛型集合方面的内容。泛型能够在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。泛型本质上是提供类型的“类型参数”,也就是参数化类型。我们可以为类、接口或方法指定一个类型参数,通过这个参数限制操作的数据类型,从而保证类型转换的绝对安全。泛型集合来看一下下面的示...

weixin_28895433的博客 622

【Java】集合框架和泛型(三)

(1)将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。这就是泛型。泛型的本质就是参数化类型。(2)泛型的定义语法格式如下:类1或者接口 对象 = new 类2();注意:-->“类2”可以是“类1”本身,可以是“类1”的子类,还可以是接口的实现类。-->“类2”的类型实参必须和“类1”中的类型实参相同。(3)例如:ArrayList list = new ArrayList();

swy2560666141的博客 872

java集合 泛型_Java 集合和泛型

一、集合(Collections)Java使用集合来组织和管理对象。1、Java的集合类集合类主要负责保存、盛装和管理对象,因此集合类也被称为容器类。集合类分为Set、List、Map和Queue四大体系。Set 代表无序、不可重复集合;List 代表有序、可重复集合;Map 代表具有映射关系元素的集合;Queue 代表队列,实现元素的先进先出管理。数组也是一种集合类,它是能随机存储和访问引用序列...

weixin_35728636的博客 361

java泛型和集合_泛型和集合

java泛型和集合 问候, 介绍 这周,我将写一些关于泛型的东西(那些有趣的尖括号)。 我需要 一个示例,并决定使用集合及其一些操作。 这周 本文讨论了一个集合类和对该集合的两个有趣的操作: 组合和集合分区。 首先对算法进行描述 给定,然后我们将对它们的通用实现有一些乐趣。 组合方式 对于给定的集合S = [x,y,z],有八组代表所有可能 这三个不同元素的组合: ...

IT与开发人员的地盘 199

Java中集合的泛型(详解)

首先创建3个类 1个 Person类 1个Student类 1个Worker类 Person类中 写两个变量 姓名 年龄 写出构造方法 set/get方法 重写toString方法 Student类继承Person类 写出构造方法 Worker类先声明都不写 泛型: 表示集合中 保存的数据的类型 用集合来保存字符串 要写泛型

SuPrEeMm的博客 1万+

java泛型与集合框架

一、泛型 Java泛型是jdk 1.5中引入的一个新特性。泛型是对Java原有的类型系统的一种扩展,其本质是参数化类型,把类型作为参数传递。 常见的泛型有泛型类、泛型接口、泛型方法 语法:<T, …> T称为类型占位符,表示一种引用类型 使用泛型的好处: 编译时检查类型安全,防止类型转换异常,提高代码的安全性 所有的强制转换都是自动的和隐式的,提高代码的重用性 1.1 泛型类的使用 /** * 泛型类 * 语法:类名<T> * 描述:T是类型占位符,表示一种引用类型,可以写

szly_xyk的博客 687

Java集合、泛型和枚举

转载于:http://c.biancheng.net/java/ 在 Java 中数组的长度是不可修改的。然而在实际应用的很多情况下,无法确定数据数量。这些数据不适合使用数组来保存,这时候就需要使用集合。 Java 的集合就像一个容器,用来存储 Java 类的对象。有些容器内部存放的东西在容器内部是不可操作的,像水瓶里的水,除了将其装入和倒出之外,就不能再进行别的操作了,但是很容易装入和倒出;而有些容器内部存放的东西在容器内部是可以操作的,例如,衣柜里面摆放的衣服,不仅可以将衣服存放到衣柜中,还可以将衣服有

qq_41854911的博客 1178

JAVA入门-集合与泛型

Java集合的基本使用

comegoing_xin_lv的博客 1019

Java中的集合与泛型

Java集合框架(Java Collections Framework)提供了一套接口和类,用于存储和操作一组对象。泛型(Generics)是Java 5引入的特性,允许在定义类、接口和方法时使用类型参数。泛型通配符(Wildcard)用于表示未知类型,通常用于方法参数中,以增加方法的灵活性。集合框架与泛型结合使用,可以确保集合中存储的元素类型一致,避免类型转换错误。通过以上内容,可以更好地理解Java中的集合与泛型的使用方法和应用场景。泛型方法允许在方法级别使用类型参数,使得方法可以处理多种类型的数据。

2502_90670719的博客 636
上一篇: Java集合——List实现类
下一篇: Java集合——Map集合:Map接口的基本使用
异色小世界
博客等级 码龄8年 13粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值