没有合适的资源?快使用搜索试试~ 我知道了~
1.同步特性不同 HashMap 同一时间允许多个线程同时进行操作 效率较高 但是可能出现并发错误 Hashtable 同一时间只允许一个线程进行操作 效率较低
资源详情
资源评论
资源推荐
01. String StringBuffer StringBuilder 的区别?
1) String:字符串常量,字符串长度不可变。Java 中 String 是 immutable(不可变)的。
2) StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,
出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的
toString()方法。出现在 JDK1.0
3) StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder 对象被当作是一个包含字
符序列的变长数组。出现在 JDK1.5
02. HashMap 和 HashTable 的区别?
1.同步特性不同
HashMap 同一时间允许多个线程同时进行操作 效率较高 但是可能出现并发错误
Hashtable 同一时间只允许一个线程进行操作 效率较低 但是不会出现并发错误
*:JDK5.0 开始 Collections.synchronizedMap(hashMap);
2.对于 null 的处理不同
HashMap 无论主键还是值 都是可以存放 null 的 只不过主键要求唯一
所以只能存放一个 null
Hashtable 无论主键还是值 都不允许存放 null 会出现异常 NullPointerException
3.底层实现的细节不同
HashMap 默认分为 16 个小组 分组组数可以指定 但是最终结果一定是 2 的 n 次方
正因为分组组数都是 2 的 n 次方 所以可以使用 &(分组组数-1)来计算散列
Hashtable 默认分为 11 个小组 分组组数完全可以随意指定
正因为如此 它不能使用&(分组组数-1) 而只能使用%分组组数
4.出现的版本不同
HashMap since JDK1.2
Hashtable since JDK1.0
03. ==和 equals 的区别?
1.==首先是一个运算符。
2.equals 则是一个 String 对象的方法,可以.出来
两种比较:
1.基本数据类型比较:==和 equals 都是比较两个值是否相等,true 和 false
2.引用对象比较:==和 equals 都比较内存中的地址是否相等,true 和 false
1.string 是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 equals 这两者比较的都是
字符串是否相同;
2.当你创建两个 string 对象时,内存中的地址是不相同的,你可以赋相同的值。
所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯
定的;
3.基本数据类型比较(string 除外) == 和 Equals 两者都是比较值;
04. HashMap 如何调整性能和空间的取舍?
05. List set 和 Map 存取元素的特点以及你所知道的实体类?
Set 中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方
式排序,例如 TreeSet 类,它可以按照默认排序,也可以通过实现 java.util.Comparator<Type>接口
来自定义排序方式。
List 中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如
通过 list.get(i)方式来获得 List 集合中的元素。
Map 中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
06. 创建线程有几种方式?分别是?
1.承继自 Thread 类,代码逻辑写在子线程中,需要重写 run()方法,主线程里 start()就可以了
package com.myjava.thread;
public class ExtendsThread extends Thread{
private final static int THREAD_NUM = 5;
public static void main(String[] args){
for (int i = 0; i <THREAD_NUM; i++) {
new ExtendsThread("thread"+i).start();
}
}
public ExtendsThread(String name){
super(name);
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < this.THREAD_NUM; i++) {
System.out.println(this.getName()+i);
}
}
}
2,实现 Runnable 接口
package com.myjava.thread;
public class ImplRunnable implements Runnable {
private static final int THREAD_NUM = 5;
@Override
public void run() {
for (int i = 0; i < THREAD_NUM; i++) {
System.out.println(Thread.currentThread().getName()+i);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int j = 0; j < THREAD_NUM; j++) {
ImplRunnable implRunnable= new ImplRunnable();
new Thread(implRunnable,"thread"+j).start();
}
}
}
3,通过线程池
package com.myjava.thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPool {
private static int POOL_NUM = 10;
public static void main(String[] agrs){
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < POOL_NUM; i++) {
RunnableThread thread = new RunnableThread();
executorService.execute(thread);
}
}
}
class RunnableThread implements Runnable{
private int THREAD_NUM = 10;
public void run() {
for (int i = 0; i <THREAD_NUM; i++) {
System.out.println("线程"+Thread.currentThread()+i);
}
}
}
07. ArrayList 与 LinkedList 的区别?
剩余19页未读,继续阅读
小崔个人精进录
- 粉丝: 30
- 资源: 316
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Anaconda3-2024.02-1-Windows-x86-64.exe
- stm32cubemx can通信 一个板子负责传感器采集 一个板子负责wifi传递到网页 网页可控制传感器板子.zip
- k8s集群搭建1.27.1版本(来源于图灵k8s笔记)
- 树莓派连接 DS18B20 温度传感器读取温度时监控客户端,服务器端连接状况,实现断线重连机制
- 小游戏-坦克大战,你认为的小游戏
- 最好用的富文本编辑器wangeditor
- jQuery 3.7.1
- 校园失物招领小程序源码可作毕业设计
- SAP客户端GUI740安装包(JAVA版本)
- winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0