java框架概念_java概念(2)

java概念(2)

重载和重写

重载:同一个类中,方法名相同,参数不同

重写:父子类中,子类重新定义父类的方法

多态

​ 多态:同一种行为,不同的对象有不同的表现形式。

​ 重载 编译时根据参数决定调用的方法,即编译时的多态性。

​ 重写 运行时根据对象类型调用子类方法,即运行时的多态性。

优点:子类可以重写,提高了重用性

接口和抽象类的区别

抽象类

使用abstract修饰;

不能使用new来实例化对象;

抽象类不一定包含抽象方法,可以有具体的方法;

接口

使用interface修饰;

接口不能被实例化;

一个类只能继承一个类,但可以实现多个接口;

接口中方法均为抽象方法;

接口中不能包含实例域或静态方法。

注意:抽象类主要做父类,提供公共的属性和方法,便与重用。

接口提供一种规范,目的是降低耦合,比抽象类 抽象程度更高。

序列化 ?

序列化: 把对象转换为字节序列 保存到流 。

实现方式:

(1) 将 被 序 列 化 的 类 实 现Serializable 接口 进行标识。

class Student implements Serializable{}

(2)使用流进行读/写

ObjectOutputStream objectStream=new ObjectOutputStream(

new FileOutputStream(new File(“d:\student.txt”));

objectStream.writeObject(objectStream);

objectStream.close();

(3) 反序列化: 将字节序列恢复为对象 。

ObjectInputStream objectStream=new ObjectInputStream(

​ new FileInputStream(new File(“d:\student.txt”)));

​ Studentstudent=(Student)objectStream.readObject();

5.Java中集合框架

1da1c264882af4284093abe86709fd7c.png

ff20ae73d7a218850cb440e40226f2bd.png

要点:

Java集合类由两个接口派生:Collection和Map

Collection分两大部分:List和Set

List,Queue是Java提供的队列实现

Map是映射接口,每个元素都是一个key-value键值对

Set、List、Map 集合,最常用 HashSet、ArrayList、HashMap

List、Map、Set 区别

List:有序、可重复 集合,集合中每个元素都有 对应顺序索引。

​ List 默认按元素添加顺序 设置元素的索引,可以通过索引来访问指定位置元素。

​ List接口集合:ArrayList、LinkedList、Vector、Stack。

Set接口不允许重复

​ 常用实现类有HashSet、LinkedHashSet和TreeSet。

Map接口采用键值对Map的存储方式,保存具有映射关系的数据,

​ key值不允许重复,可以为null。如果已经有重复的key,则新的value会覆盖该key原来对应的value。

​ 常用实现类有HashMap、LinkedHashMap、TreeMap等。

7. HashMap 和 HashTable 有什么区别?

要点:

HashMap与Hashtable是Map接口的两个典型实现。都是采用了hash表数据结构来实现,可以快速定位元素。存储时,根据key的哈希值决定元素存放的位置。

HashMap继承自AbstractMap类。实现了Map接口。

Hashtable继承自Dictionary类,Dictionary类是一个已经被废弃的类。父类已经不推荐使用,因此它的子类Hashtable也很少用了。

Hashtable是JDK1.0引入的,是线程安全的,适用于多线程环境

HashMap是JDK1.2引入的,非线程安全的,适用于单线程环境。不保证存取的顺序性的,也就是说遍历HashMap的时候,得到的元素的顺序与添加元素的顺序是不同的。

HashMap是允许key和value为null值的,只能有一个key为null。它用containsValue和containsKey方法判断是否包含对应键值对;

HashTable键值对都不能为空,否则包空指针异常。

8 .Java 中 ArrayList 和 LinkedList 以及Vector的区别?

要点:

ArrayList是一个动态数组Object[],是List类的典型实现。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。

ArrayList擅长于随机访问。同时ArrayList是非同步的。

LinkedList是List接口的另一个实现,除了可以根据索引访问集合元素外,LinkedList还实现了Deque接口,可以当作双端队列来使用,也就是说,既可以当作“栈”使用,又可以当作队列使用。

LinkedList的实现机制与ArrayList的实现机制完全不同,ArrayLiat内部以数组的形式保存集合的元素,所以随机访问集合元素有较好的性能;LinkedList内部以链表的形式保存集合中的元素,所以随机访问集合中的元素性能较差,但在插入删除元素时有较好的性能。

Vector与ArrayList相似,但是Vector是线程同步的。所以说Vector是线程安全的动态数组。它的操作与ArrayList几乎一样。

9.HashSet是如何保证数据不可重复的?

要点:

HashSet的底层其实就是HashMap,只是HashSet是实现了Set接口并且把数据作为Key值,而value值一直使用一个相同的虚值来保存.由于HashMap的Key值本身就不允许重复,并且在HashMap中如果Key/value相同时,会用新的Value覆盖掉旧的Value,然后返回旧的Value,内部执行终会返回一个false,导致插入失败,这样就保证了数据的不可重复性.

10.Collection和Collections区别

要点:

​ Collection是集合的顶层结构,提供了集合的公共操作的规范

Collections是一个静态的工具类,提供了集合常见的操作实现,比如排序,搜索,反序等,简化开发中常见的功能。

void reverse(List list)//反转

void shuffle(List list)//随机排序

void sort(List list)//按自然排序的升序排序

void sort(List list, Comparator c)//定制排序

void swap(List list, int i , int j)//交换两个索引位置的元素

void rotate(List list, int distance)//旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面

int binarySearch(List list, Object key)//对List进行二分查找

int max(Collection coll)//根据元素的自然顺序,返回最大的元素。

int max(Collection coll, Comparator c)//根据定制排序,返回最大元素,

void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。

int frequency(Collection c, Object o)//统计元素出现次数

int indexOfSubList(List list, List target)

//统计target在list中第一次出现的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

元素。

int frequency(Collection c, Object o)//统计元素出现次数

int indexOfSubList(List list, List target)

//统计target在list中第一次出现的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

//用新元素替换旧元素

标签:java,HashMap,List,ArrayList,元素,list,接口,概念

来源: https://blog.csdn.net/weixin_48407105/article/details/113801842

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS(八)--crontab命令的使用方法

crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。 在Linux系统中,Linux任务调度的工作主要分为以下两类&…

有健忘症吗?

今天兴高采烈,早上空气不错, 但是骑自行车的我,还是得戴一个面罩。 半个小时后买了早餐, 一份炒粉、一豆浆,今天早上豆浆没有掉地上, 但是~~~~~~~~~~~~~~shit~~!~!~,居然忘记带要换的衣服了, …

下载java后缀的文件闪退_关于jarfile 打开闪退问题

后面才发现,原来是因为我把文件拖入了新建的文件夹,改变了路径,而且我的java环境没有配置好是全局变量,所以新建文件夹之后,就会出现找不到了路径,闪退的问题,,,还有就是…

心理学资源整理

http://blog.sina.com.cn/s/articlelist_1227187337_0_1.html 功夫 转载2016-06-07 15:53:55中华大地的武学,奥妙精深。但从大的方面来说,可分为内外软硬,有形无形的区别。注重于外,修炼筋骨皮肉的是有形的功夫;注重于…

[已解决]Vistual Stdio 2015 installer Bootstrapper Packages 路径

VS2015 installer 的预装包的地址变更成 C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages 参看文档:https://msdn.microsoft.com/en-us/library/ms165429(vvs.140).aspx 之前的版本是在 C:\Program Files (x86)\Microsoft SDKs\Win…

java怎样写入五个人的成绩_用java输入5个学员姓名和分数,显示分数最高的学员姓名和分数?...

展开全部import java.util.Scanner;public class Student {private String stuname "";private float stuscore 0;public String getStuname() {e69da5e6ba9062616964757a686964616f31333335316633return stuname;}public void setStuname(String stuname) {this.s…

eBay宣布发布全新的购买和销售APIs

eBay最近宣布发布两款全新的购买和销售APIs。这些APIs旨在促进eBay产品在第三方应用程序中的更好集成。eBay于10月19日在他们的博客上发表了几篇文章,不仅详细介绍了这些全新的购买和销售APIs提供的功能,而且还详细地总结了他们公司从SOAP(简…

iOS 10 升级后无法真机测试 Could not find Developer Disk Image

---2016年9月20日更新 iOS 升级到10之后,你会发现无法进行真机测试了。这种情况我在iOS 8.4 、9.3更新的时候也遇到过。原因是Xcode 的DeviceSupport里面缺少了iOS 10的SDK。所以你可以选择将Xcode更新到最新版本就可以了&#xf…

java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择

JAVA虚拟机JVM优化重要性,昨天JAVA虚拟机JVM参数优化(1)文章中已经描述,今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法。JVM内部结构如下图所示:串行收集用于单个线程执行垃圾收集的情况,在这种情况下相对它…

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

2019独角兽企业重金招聘Python工程师标准>>> 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的…

java clicked_关于java:JComponents在调用mouseClicked()之后消失

我正在用Swing编写Java GUI程序。该界面如下所示:当用户单击右侧的图片之一时,我希望它的一个小的预览显示在左上角的橙色区域中。我通过SwingWorker线程从计算机上的目录中提取所有图像文件。在SwingWorker的done()方法中,我向每个对象添加了…

vim简单命令教程-firstblood

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。 Vim the Six Billion Dollar editor Better, Stronger, Faster. 学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文…

第三课、Qt的诞生和本质------------------狄泰软件学院

一、GUI用户界面元素 (1)、GUI应用程序是由固定的窗口元素所构成 (2)、操作系统提供了创建用户界面元素所需要的函数 (3)、各自功能不同的函数依次调用,从而创建出界面元素 (4&#…

java mapstring_ object 遍历_ListMapString,Object使用Java代码遍历以获取String,Object的值...

List>的结果集怎么使用Java代码遍历以获取String,Object的值?package excel;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class List1{public static void main(String[] args){Map map…

Linux tar命令高级用法——备份数据

Linux tar命令高级用法——备份数据 2015-12-31 Linux学习Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件和目录备份到磁带中,然后从磁带中提取或恢复文件。现在我们可…

iOS uiviewcontroller 添加另外一个controller的View

需要 添加 [self addChildViewController:vc]; [_mainScrollView addSubview:vc.view];转载于:https://www.cnblogs.com/foolish-guo/p/6385288.html

mysql 即学a又学b_MySQL学习第一天

一、 数据库:*学习重点:创建数据库/向表添加记录/查询记录数据库概念:文件系统(存储和管理)数据库软件介绍:Oracle/MySQL/SQL server…分类:关系型数据库:关系模型组织数据非关系型数据库:键值对关系存储二、 mysql数据的存储方式:一台数据库服务器中会创建很多个数据库(一个项…

Intellij IDEA 快捷键(Mac)

编辑 格式化代码 AltCommandL 大小写切换 ShiftCommandU 包围 AltCommandT 选中代码抽取方法 AltCommandM 调试/运行查看 类关系视图 CommandAltU 查看所有的 TODO Command6 查询方法调用处 AltF7 搜索其它 隐藏 Intellij IDEA CommandH 自动提醒 Alt/(这是我自己设置的)…

Spark RDD算子介绍

Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。 Spark是MapReduc…

java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!

作者 | 中华石杉责编 | 伍杏玲本文经授权转载石杉的架构笔记(ID:shishan100)这篇文章我们来看看,世界上最优秀的分布式文件系统HDFS,是如何对超大文件的上传做性能优化的?首先,我们还是通过一张图来看一下文件上传的大…