java 8 list对象属性判空_Java的List、Map等集合对象详细总结

本文深入探讨了Java中集合与数组的区别,特别是在存储灵活性和效率方面。通过具体示例展示了如何使用List和Set集合,并介绍了泛型的概念及其实用价值,帮助开发者避免类型转换错误并提高代码安全性。

《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。

一、为什么使用集合而不是数组

1、集合和数组相似点

都可以存储多个对象,对外作为一个整体存在

2、数组的缺点

长度必须在初始化时指定,且固定不变

数组采用连续存储空间,删除和添加效率低下

数组无法直接保存映射关系

数组缺乏封装,操作繁琐

二、Java集合的总体结构

1、List集合、Map集合数据的特点

2、List的应用

示例1:

ArrayList list=new ArrayList();

list.add(111);

list.add(0.11f);

list.add(new String("ab"));

list.add(new Integer(100));

list.add(new Goods("g001","book001"));

for(int i=0;i

{

Object obj=list.get(i);

System.out.println(obj);

}

示例2:

public class Demo

{

public static List show()

{

int count=0;

List list=new ArrayList();

for(int i=1;i<=100;i++)

{

count=0;

for(int j=1;j<=i;j++)

{

if(i%j==0)

{

count++;

}

}

if(count==2){

list.add(i);

}

}

return list;

}

public static void main(String args[])

{

List list= show();

for(Object obj:list)

{

System.out.print(obj+" ");

}

}

}

示例3:

public class Demo

{

public static void main(String args[])

{

String s[]={"aaa","bbb","aaa","ddd","aaa","eee","bbb"};

Set set=show(s);

for(Object obj:set)

{

System.out.println(obj);

}

}

public static Set show(String s[]) {

Set set=new HashSet();

for(int i=0;i

{

set.add(s[i]);

}

return set;

}

}

三、泛型

1、避免类型转换出现错误

例如:

public static void main(String args[])

{

List list=new ArrayList();

list.add("aaa");

list.add("bbb");

list.add(new Goods("g001","book001"));

list.add("ccc");

for(int i=0;i

{

Object obj=list.get(i);

String s=(String)obj;

System.out.println(s);

}

}

出现运行时异常:

Exception in thread "main" java.lang.ClassCastException: com.Goods cannot be cast to java.lang.String

at com.Demo.main(Demo.java:16)

解决方案:泛型

语法格式: List list=new ArrayList();

2、在编译阶段就将错误检测出来

3、在运算的时候数据类型能够确定,不需要进行强制转换

例-1:

public static void main(String args[])

{

List list=new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

for(String s:list)

{

System.out.println(s);

}

}

例子-2:

实体类:

public class Goods {

private String gid;

private String gname;

private Float price;

public Goods(String gid, String gname, Float price) {

super();

this.gid = gid;

this.gname = gname;

this.price = price;

}

public String getGid() {

return gid;

}

public void setGid(String gid) {

this.gid = gid;

}

public String getGname() {

return gname;

}

public void setGname(String gname) {

this.gname = gname;

}

public Float getPrice() {

return price;

}

public void setPrice(Float price) {

this.price = price;

}

}

测试:

public static void main(String args[])

{

List goodsList=new ArrayList();

Goods g1=new Goods("g001","book001",new Float(1000));

Goods g2=new Goods("g002","book002",new Float(2000));

Goods g3=new Goods("g003","book003",new Float(3000));

goodsList.add(g1);

goodsList.add(g2);

goodsList.add(g3);

System.out.println("商品ID商品名称商品价格");

for(Goods g: goodsList)

{

System.out.println(g.getGid()+""+g.getGname()+""+g.getPrice());

}

}

示例-3:

public class Demo

{

public static void main(String args[])

{

List goodsList=new ArrayList();

Scanner input=new Scanner(System.in);

while(true)

{

Goods goods=new Goods();

System.out.println("请输入商品编号(输入quit退出):");

String gid=input.next();

if("quit".equals(gid))

{

break;

}

goods.setGid(gid);

////////

System.out.println("请输入商品名称(输入quit退出):");

String gname=input.next();

goods.setGname(gname);

////////

System.out.println("请输入商品价格(输入quit退出):");

Float gprice=input.nextFloat();

goods.setPrice(gprice);

goodsList.add(goods);

}

for(Goods g:goodsList)

{

System.out.println(g.getGid()+" "+g.getGname()+" "+g.getPrice());

}

}

}

8d56a6b89363f101b2a1e4ffa189dffa.png

《大数据和人工智能交流》的宗旨

1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。

2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。

3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。

根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。

根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值