Java基础周测-05
知识点:栈是一种只能从表的一端存取数据且遵循“先进后出”原则的线性存储结构。
解析:链表采用的是链式存储结构(数据元素随机存储,并通过指针表示数据之间逻辑关系的存储结构)。它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。链式存储结构的不足之处:①每个结点中的指针域需额外占用存储空间;②链式存储结构是一种非随机存储结构。
题目解析:一般来说,一种数据结构根据需要可以表示成多种存储结构。常用的存储结构有顺序、链接、索引等,而采用不同的存储结构,其数据处理的效率是不同的;一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系是有可能不同的。
解析:链表可连续,可不连续线性链表的表头元素在内存中位置任意,在逻辑上在其他元素的前面
知识点:
- 有序,可重复,非同步
- 底层使用双链表存储,所以查找慢(LinkedList不能随机访问,从开头或结尾遍历列表)
- 添加和删除快(找到指定位置或者找到指定元素后,添加和删除操作快)
知识点:
- HashMap
底层实现1.7之前:数组+链表 ; 1.8以后:数组+链表+红黑树
key不允许重复,如果key的值相同,后添加的数据会覆盖之前的数据
HashMap是非线程安全的,允许存放null键,null值。
Hashtable,它的操作接口和HashMap相同。
Hashtable是线程安全的,而HashMap是非线程安全的
Hashtable不允许空的键值对,而HashMap可以
Hashtable与HashMap都实现Map接口,但二个类的继承的父类不是同一个
解析:Date类及时间格式化SimpleDateFormat类线程不安全。LocalDateTime类及其时间格式化DateTimeFormatter类线程安全。
知识点:LocalDat日期LocalTime时间LocalDateTime日期和时间
知识点:BigDecimal:加add减subtract乘multiply除divide
知识点:向上取整ceil向下取整floor四舍五入round幂pow比大max比小min随机值random
知识点:如何判断key是否相同
- 第一步计算key的hashcode是否想相同,如果不同,就认为key不相同,
- 如果相同进行第二步判断,判断key的equals是否为true,如果为false就是认为key不相同,如果为true就认为key相同
重写hashcode和equals的原则
- hashcode相同,equals不一定相等,但是equals相等,hashcode必须相同
知识点:1、Collection是集合顶层接口,Collection派生了两个子接口
List和Set,分别定义了两种不同的存储方式。 2、Collections是一个包装类,它包含各种有关集合操作的静态方法(对集合的搜索、排序(sort)、线程安全化(synchronizedList(xxx))等)。
此类不能实例化,就像一个工具类,服务于Collection框架。
import java.io.*;
public class TestFileCopy {
public static void main(String[] args) {
//定义FileInputStream类型变量
FileInputStream fis = null;
//定义FileOutputStream类型变量
FileOutputStream fos = null;
try {
//实例化FileInputStream文件输入流
fis = new FileInputStream("data.txt");
//实例化FileOutputStream文件输出流
fos = new FileOutputStream("data_copy.txt");
// 定义byte数组存储读取的数据
byte[] bytes = new byte[1024];
int len = 0;
//循环读取数据到byte数组中
while ((len = fis.read(bytes)) != -1) {
//把byte数组中的数据写入到输出流文件中
fos.write(bytes, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("b"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); list.add("d"); list.add("c"); list.add("c"); list.add("c"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); |
private static void getSingle(List<String> list) {
//1,创建一个LinkedHashSet集合
LinkedHashSet<String> lhs = new LinkedHashSet<>();
//2,将List集合中所以的元素添加到LinkedHashSet集合中
lhs.addAll(list);
//3,将List集合中的元素清除
list.clear();
// 4,将LinkedHashSet集合中元素添加到List集合中
list.addAll(lhs);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现