什么是泛型以及在集合中泛型的使用[通俗易懂]

什么是泛型以及在集合中泛型的使用[通俗易懂]什么是泛型?泛型最常与集合使用,因为泛型最开始开始被加入Java就是为了解决集合向下转型一类问题的。如果我们有这样一个需求:定义一个描述类圆,要求圆中的数据类型是不确定的,也就是声名属性的时候,属性类型是不确定的。比如描述类圆中有半径,要求半径可以用int,也可以用double。那么此时数据类型不确定,就使用泛型,把数据类型参数化。集合中泛型的使用List中使用泛型在我们创建集合时使用<>来声明List集合只能保存Dog类对象Listdogs=newArrayList<&gt

大家好,又见面了,我是你们的朋友全栈君。

什么是泛型?

泛型最常与集合使用,因为泛型最开始开始被加入Java就是为了解决集合向下转型一类问题的。如果我们有这样一个需求:定义一个描述类圆,要求圆中的数据类型是不确定的,也就是声名属性的时候,属性类型是不确定的。比如描述类圆中有半径,要求半径可以用int,也可以用double。那么此时数据类型不确定,就使用泛型,把数据类型参数化。

集合中泛型的使用

List中使用泛型

在我们创建集合时使用<>来声明List集合只能保存Dog类对象
List dogs=new ArrayList<>();
创建Dog类对象
Dog dog1 = new Dog(“101”,“来福”);
添加Dog对象到集合中
dogs.add(dog1);//此时dogs集合中只能存放Dog类对象

public class ListTest { 
   

	public static void main(String[] args) { 
   
		//声明List集合只能保存Dog类对象
		List<Dog> dogs=new ArrayList<>();
	 
		//创建Dog对象。
		Dog dog1=new Dog();
		dog1.setId(111);
		dog1.setName("来福");
		
		Dog dog2=new Dog();
		dog2.setId(112);
		dog2.setName("来福2");
		
		//Dog对象添加到集合
		dogs.add(dog1);
		dogs.add(dog2);
		
		//获得某个元素
		Dog dog = dogs.get(1);
		System.out.println(dog);
		
		//获得List集合的迭代器
		Iterator<Dog> it = dogs.iterator();
		while(it.hasNext()) { 
   
			Dog next = it.next();
			System.out.println(next);
		}
		
		//使用高级for进行遍历
		for(Dog d:dogs) { 
   
			
			System.out.println("--"+d);
		}
		
	}
}

Map中使用泛型

创建集合对象,key为String类型,value为Dog类类型。
Map<String,Dog> dogs=new HashMap<>();
将dog对象保存到Map集合中
dogs.put(“111”, dog1);//此时的key只能是字符串类型,value只能是Dog类型

总结:

在集合中使用泛型的目的就是为了解决向下转型的问题,在泛型具体化之后,集合只能存储与泛型具体化之后的类型。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151141.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python与c语言的区别与联系_爬虫python和c语言区别

    python与c语言的区别与联系_爬虫python和c语言区别经过不算是长时间的学习,相比我之前学的C语言,我觉得Python,有以下特点:1.因为C语言是编译型语言,python是解释型语言,所以python的执行速度没有C语言那么快。2.基本元素的区别,python中的基本元素相比于C语言大大减少,比较特殊的就是python语言中的tuple(元组),一个类似于列表且内部元素不允许被改变的一个数据,这样可以使得程序的数据更加安全;其次是python中…

    2022年10月24日
  • Android浏览器调用APP「建议收藏」

    Android浏览器调用APP「建议收藏」有时我们想通过点击浏览器中某些广告链接来启动或下载APP,以启动APP来说,我们知道APP可以定义一个scheme,如果我们在浏览器中定义一个URL,这个URL使用定义的scheme,这样点击后我们就可以打开我们的客户端了,但目前市面上有些浏览器支持性不好,或者直接就不支持,认为这个打开是一个有害的链,那么我们还有没有其它的办法来结合,下面我们以web服务做为功能基础来实现我们知道如果在地址栏

  • C#最简单最完整的webservice实例「建议收藏」

    C#最简单最完整的webservice实例「建议收藏」
     在我博客已经 有了,不想再重复,可以去看看
     http://fyinthesky.blog.163.com/blog/static/3555251720110115227337/

  • 你所选择的栏目与当前模型不相符请选择白色的选

    你所选择的栏目与当前模型不相符请选择白色的选

  • Push Button Web Hosting

    Push Button Web HostingPremiumPushButtonWordPressHostingPickaPlan&BuildYourSiteinUnder60Seconds!YourOneClickWordPressWebsiteBuilderWebWeaverEliteHostingMakesBuildingYour

  • java lang nullpointer_java.lang.throwable

    java lang nullpointer_java.lang.throwableIntentintent=registerReceiver(null,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));查询电量的时候可以通过上面这种方式返回一个intent,从这个intent中也确实能够拿到我们想要要的信息,但是平常我们注册普通的广播的时候都习惯传入一个receiver,如果有电量改变就会不停的执行receiver的onR…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号