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内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- # Python 3 # Python 3字典Dictionary(1)
- Python第八课:数据类型中的字典及其函数与方法
- Python中字典详解(python 中字典)
- Python3.9又更新了:dict内置新功能,正式版十月见面
- Python3 基本数据类型详解(python三种基本数据类型)
- 一文掌握Python的字典(python字典用法大全)
- 超级完整|Python字典详解(python字典的方法或操作)
- Python3.9版本新特性:字典合并操作的详细解读
- python 自学,字典3(一些例子)(python字典有哪些基本操作)
- Python3.9中的字典合并和更新,几乎影响了所有Python程序员
- 标签列表
-
- r语言矩阵 (127)
- browsererror (114)
- exportexcel (119)
- cv2.bitwise_not (137)
- dump命令 (128)
- es6concat (126)
- heapify (127)
- java.security.egd (130)
- javax.annotation (117)
- jsstringsplit (117)
- js数字 (115)
- maven编译 (132)
- mysqlleft (128)
- nodejsbuffer (149)
- org.apache.commons.httpclient (126)
- org.jsoup (141)
- org.springframework.web (128)
- robotframework-ride (115)
- setnocounton (141)
- socket.gethostbyname (122)
- sqlmid (121)
- time.strptime (133)
- vscode格式化 (125)
- win32con (129)
- window.localstorage (126)