百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

617、java类,对象,集合的介绍(java集合框架)

toyiye 2024-09-08 10:04 4 浏览 0 评论

617、java类,对象,集合的介绍

本章内容只做了解,与编写淘宝整站无关,目的是让学生理解现有计算机技术,希望同学们能革故鼎新,取其优,去其糟粕。

Java中没有json,需要用对象数组转json结构,徒耗计算机资源。如有json的原生支持,将提高互联网执行速度。

类的概念其实质是结构与函数的合体。有人赞誉之,有人诋毁之。在做互联网前后端分离应用时,更多的是用json字符串构成的结构。在前后端通讯时,也只能使用字符串进行前后端的勾连,网络光纤设备是不能理解类的结构的。为了学生能看懂其他人写的程序,本节讲讲类的概念。

思考目的:如何把类构成的结构转换为json字符串,从而实现前后端交流呢?


教学视频地址:

https://www.ixigua.com/7028722184373666317?id=7098326222375289355&logTag=03f6fc517b059fc526a6

教学素材下载地址:

http://disk.1473.cn/taobaoteaching

知识点:

1、类的概念

2、实例化对象

3、重载

4、集合、数组

5、awt和util的区别

6、实例化集合

7、给集合添加对象

8、输出集合到前端

9、未完

10、下节介绍map数据类型

11、杂论

在前后端分离的情况下如何把数组类转换为字符串

1、类的概念:

定义

public class Student{

String id;

String name;

}

类形同于结构,表达复杂事物。

使用:需生成对象,实例化

Student stu1=new Student();

stu1.id="1001";

stu1.name="吴楚淮";

很不方便

学过结构体的会觉得很不方便,因其不能直接赋值,增加了劳动量,为了达到与结构体同样的赋值效果,需要额外添加2个构造函数,

构造函数与重载

public class Student{

String id;

String name;

//重载,两个函数名字一样,参数不一样。

Student(){

}

Student(String id,String name){

this.id=id;

this.name=name;

}

}

此时,可以同结构体一样使用

Student stu1=new Student();

stu1.id="1001";

stu1.name="吴楚淮";

Student stu2=new Student("0002","黄嘉森");

技术有适用范围,为了技术而盲目技术,不会带来好处,会增加工作量

2、Java中的集合(数组)

List数据类型

List是Java中比较常用的集合类,关于List接口有很多实现类,作为初学者可直接把它当做数组的概念,可直接忽略下面的介绍。

ArrayList、LinkedList和Vector之间的关系和区别。

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。

LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别。

Vector和ArrayList一样,都是通过数组实现的,但是Vector是线程安全的。和ArrayList相比,其中的很多方法都通过同步(synchronized)处理来保证线程安全。

awt和util的区别

java.util包 ,包含集合框架,collection 类、事件模型、日期和时间设施、国际化和数组各种实用工具类(字符串标记生成器、随机数生成器和位数组)。

java.awt包,包含用于创建用户界面和绘制图形图像的所有类。awt是abstract window toolkit抽象窗口工具集的缩写,用来编写窗口应用程序(现在一般常用awt的事件系统,而窗口内容代码放到了javax.swing包中)。

eg:List集合应当导入import java.util.List包;但也存在import java.awt.List的包。

导包的时候要注意区分。

基于以上分析,线性数据库我们使用Arraylist结构,其实例化方法为:

List<Student> stus=new ArrayList<Student>();

其添加到集合的方法为:

stus.add(stu1);

stus.add(stu2);

输出集合到前端

Java中集合转换为json字符串,没有这样的方法,因此需要引用阿里巴巴的json操作库,

即使引用了json库,可实现转换,多了无意义的转换操作,加重了服务器负担。输出到前端需要转换为字符串类型。

//转换为字符串

String str=stus.toString();

//输出到控制台的系统函数

System.out.println(str);

//返回到浏览器端。

return str;

有思俱乐部也写了一套集合转json字符串的方法,原理很简单,字符串拼凑即可实现。

集合的用法

有了集合,我们就可以对集合进行循环,访问集合中的每个元素,对集合进行排序,查找,增加,删除等操作,就可以控制集合中的每一个元素。

//定义返回到前端的字符串变量

String _str="";

//集合的使用,与数组相同,但提供了很多已经写好的方法

for(int i=0;i<stus.size();i++) {

//输出大禹1005的学号

if(stus.get(i).id.compareTo("1005")>0) {

//循环arraylist取其中一条数据的方法

_str=_str+stus.get(i).id;

}

}

源代码如下:

package cn.usestudio.controller;

import java.util.ArrayList;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;

//一定要添加此标识,否则找不到首页,报错

@RestController

public class DirectoryController {

//helloworld程序;

@RequestMapping(value = "/helloworld")

public @ResponseBody String hello(){

//java不支持json数据类型,此处用字符串模拟json类型。在前端转换为json。

String z= "[{'id':'1001','name':'张三'},"

+ "{'id':'1002','name':'李四'},"

+ "{'id':'1003','name':'王五'},"

+ "{'id':'1004','name':'甘铁生'},"

+ "{'id':'1005','name':'马继祖'},"

+ "{'id':'1006','name':'章汉夫'},"

+ "{'id':'1007','name':'黄强辉'},"

+ "{'id':'1008','name':'马宏宇'},"

+ "{'id':'1009','name':'谢大海'},"

+ "{'id':'1010','name':'吕显祖'}"

+ "]";

//类的实例化方法,默认实例化方法,可不申明,如添加了新的实例方法,则必须在类中显性申明此方法

Student stu1=new Student();

stu1.id="1001";

stu1.name="张三";

//类的实例化方法,需要编写相应构造函数

Student stu2=new Student("0002","李四");

Student stu3=new Student("0003","王五");

Student stu4=new Student("0004","甘铁生");

Student stu5=new Student("0005","马继祖");

Student stu6=new Student("0006","章汉夫");

Student stu7=new Student("0007","黄强辉");

Student stu8=new Student("0008","马宏宇");

Student stu9=new Student("0009","谢大海");

Student stu10=new Student("0010","吕显祖");


List<Student> stus=new ArrayList<Student>();

stus.add(stu1);

stus.add(stu2);

stus.add(stu3);

stus.add(stu4);

stus.add(stu5);

stus.add(stu6);

stus.add(stu7);

stus.add(stu8);

stus.add(stu9);

stus.add(stu10);


//java中没有集合转换为json的方法,因此需要引用阿里巴巴的json操作库,

//引用了json库,可实现转换,多了无意义的转换操作,加重了服务器负担。

//下节介绍map数据类型,同样是为学生的学习做铺垫,并不会用于项目中。

String str=stus.toString();

//定义返回到前端的字符串变量

String _str="";

//集合的使用,与数组相同,但提供了很多已经写好的方法

for(int i=0;i<stus.size();i++) {

//输出大禹1005的学号

if(stus.get(i).id.compareTo("1005")>0) {

//循环arraylist取其中一条数据的方法

_str=_str+stus.get(i).id;

}

}

//输出到控制台的系统函数

System.out.println(_str);

//返回到浏览器端。

return _str;

}

public class Student{

String id;

String name;

//构造函数:函数名与类名相同。

//重载,两个函数名称相同,参数不同。

Student(){

}

Student(String id,String name){

this.id=id;

this.name=name;

}

}

}

未完

完了吗?没有,因为前端需要json结构,集合是复杂类型,还需要转换为json。由此看出,本节讲述的类的概念在实际项目中起到的是中转站的作用。如果后端能直接支持json,是否可节约计算机计算时间?有待各位学者努力,提出后端直接处理json的方法,既提高计算速度,又能让程序员不再兜兜转转,徒耗精力。

下节介绍map数据类型,同样是为学生的学习做铺垫,并不会用于项目中。

杂论

关于类和对象的作用

在互联网中的引用,此处有一段对话比较有意思。

在很多程序中,都喜欢定义一个private变量,然后为这个私有变量加上get(),set()方法。那为什么不直接定义一个public变量呢?这样做到底有什么好处和意义呢?难道真的仅仅只是为了代码规范?别逗了,不管你信不信,反正我是不信!带着这个问题我在网上寻找答案,真是众说纷纭啊,每个人都能说出一点点道理,但是却都不足以说服我!(所以在这里做一些总结,和大家分享,我们共同学习,共同进步。如果有什么想法和意见,也欢迎大家提出来,我们一起交流。)

其中看到有这样一种说法:   “get()和set()方法起到对外界封闭的作用,举个例子:假如你的裤兜里有很多钱,你肯定不会让别人都来掏,肯定只有自己能拿到,或者你拿出来给他,set和get就相当与你的手 而你类里的变量就相当与你兜里的钱,对于外面的人来说不知道你类里有什么他就知道调用这个get会给他一个什么东西”   

哇!貌似回答得很专业,很形象,很生动,很有道理啊,差一点我就要膜拜了,但是就在千钧一发的时刻,我冷静了下来。TNN的,差点就被你给忽悠了,这个举例完全没有回答实质性的问题嘛,会举例子的人伤不起啊~~(>_<)~~ 。如果一定要把get()和set()比喻成手的话,也不能比喻成你自己的手,因为get()和set()方法也是public属性的,谁都可以调用,也就是说任何人的手都还是可以拿到你的钱,那和直接把变量设成public有什么区别吗?至于对外面的人来说知不知道你类里有什么,这个只是变量命名规范问题而已,和属性不存在半毛钱关系吧?想让人看见和更改的变量就设成public,不想让人看见和更改的就设成privtata,已经很天衣无缝了,为什么还要get(),set()方法呢?   我又迷茫了,带着依依不舍的心情,我离开了这位大神,继续寻找答案。

结论,类是结构与函数的封装,便于团队协作,用传统的结构与函数完全可以达到相同目的,代码更精简。

大道至简,程序用不到而强行使用类和对象,只是照本宣科,不足道矣!

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码