JavaLanguage
2020-03-14 11:18:59 0 举报
AI智能生成
java 语法
作者其他创作
大纲/内容
summary
reference
JAVA多线程使用场景和注意事项
深入理解 Java 泛型
【Java初探外篇02】——关于静态方法与实例方法
代码规范
reference
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
在 Java 中如何优雅地判空
不要在foreach里使用remove/add。 remove/add请使用Iterator
使用方法
why
foreach
语法
for(元素类型t 元素变量x : 遍历对象obj) {
引用了x的java语句;
}
引用了x的java语句;
}
源码
Iterator iterator = userNames.iterator();
do
{
if(!iterator.hasNext())
break;
String userName = (String)iterator.next();
if(userName.equals("Hollis"))
userNames.remove(userName);
} while(true);
System.out.println(userNames);
do
{
if(!iterator.hasNext())
break;
String userName = (String)iterator.next();
if(userName.equals("Hollis"))
userNames.remove(userName);
} while(true);
System.out.println(userNames);
example
List<String> userNames = new ArrayList<String>() {{
add("Hollis");
add("hollis");
add("HollisChuang");
add("H");
}};
for (String userName : userNames) {
if (userName.equals("Hollis")) {
userNames.remove(userName);
}
}
System.out.println(userNames);
add("Hollis");
add("hollis");
add("HollisChuang");
add("H");
}};
for (String userName : userNames) {
if (userName.equals("Hollis")) {
userNames.remove(userName);
}
}
System.out.println(userNames);
equal
Iterator iterator = userNames.iterator();
do
{
if(!iterator.hasNext())
break;
String userName = (String)iterator.next();
if(userName.equals("Hollis"))
userNames.remove(userName);
} while(true);
System.out.println(userNames);
do
{
if(!iterator.hasNext())
break;
String userName = (String)iterator.next();
if(userName.equals("Hollis"))
userNames.remove(userName);
} while(true);
System.out.println(userNames);
Iterator.next 调用了 Iterator.checkForComodification方法
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
modCount
ArrayList中的一个成员变量。它表示该集合实际被修改的次数
expectedModCount
是 ArrayList中的一个内部类——Itr中的成员变量。
result
java.util.ConcurrentModificationException
异常
fail-fast
definition
是Java集合的一种错误检测机制
当多个线程对集合(非fail-safe的集合类)进行结构上的改变的操作时,有可能会产生fail-fast机制
抛出ConcurrentModificationException(当方法检测到对象的并发修改,但不允许这种修改时就抛出该异常)。
note
即使不是多线程环境,如果单线程违反了规则,同样也有可能会抛出改异常。
正确方法
直接使用Iterator进行操作
使用Java 8中提供的filter过滤
fail-safe的集合类
只删除一个元素
使用增强for循环其实也可以
并发
线程
高性能
cpu 缓存
线程封闭
ThreadLocal
局部变量
线程池
线程缺点
创建对象费时
线程消耗内存
切换线程
元素
线程池管理器
工作线程
任务接口
线程队列
API
Executor
Executor
ExecutorService
ScheduledExecutorService
ScheduleAtFixRate
ScheculeWithFixDelay
ThreadPoolExecutor
SheduledThreadPoolExecutor
DelayWorkQueue
Executors工具类
newFixedThreadPool
core
指定
max
指定
newCachedThreadPool
core
0
max
MAX_VALUE
SynchronousQueue
不存放任务
任务大小不确定
newSingleThreadExecutor
core
1
max
MAX_VALUE
newScheduledThreadPool
core
指定
max
指定
线程创建
core
创建线程
队列
> core: 进队列
max
> 队列: 创建线程
> max: 拒绝执行
集合
HashMap
无序
LinkedHashMap
有序
stream
Java 8中处理集合的优雅姿势——Stream
IO
阿里面试题BIO和NIO数量问题附答案和代码
序列化
reference
深入理解 Java 序列化
子主题
基础
Import
reference
import static和import的区别
import static
导入这个类里的静态方法
String
为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接
字符串不变性
reference
Java类加载知识总结
exception
reference
深入理解 Java 异常
object 方法
equals
如果两个对象相等(equal),那么他们一定有相同的哈希值。
如果两个对象的哈希值相同,但他们未必相等(equal)。
如果两个对象的哈希值相同,但他们未必相等(equal)。
hashCode
控制
public
类内部
本包
子类
外部包
protected
类内部
本包
子类
外部包
default
类内部
本包
子类
外部包
private
类内部
本包
子类
外部包
final
类
方法
属性
参数
代理
reference
纯手写实现JDK动态代理
你真的完全了解Java动态代理吗?看这篇就够了
子主题
反射
类加载
子主题
子主题
Annotation
summary
Java SE 5.0 版本中开始引入的概念
作用分类
编写文档
生成doc
代码分析
反射
编译检查
@Override
当注释用
编译器编译检查
知识点
JDK 预定义注解
@Override
继承
@Deprecated
过期
@SuppressWarnings
压制警告
参数all
自定义注解
定义
格式
元注解
@interface 注解名
注解本质
接口
属性
抽象方法
要求
返回值
基本数据类型
String
枚举
注解
以上类型的数组
赋值
default
value
数组
元注解
@Targe
ElementType
Type
Field
Method
@Retention
RententionPolicy
Source
Class
Runtime
@Documented
@Inherited
使用
解析过程
泛型
泛型
为什么需要泛型
编译时强类型检查
子主题
子主题
泛型类型
泛型类
泛型接口
泛型方法
类型擦除
Java 泛型是使用类型擦除来实现的,使用泛型时,任何具体的类型信息都被擦除了。
泛型和继承
泛型类型无法向上转型
类型边界
可以对泛型的类型参数设置限制条件
T extends Comparable<T>
表明传入方法中的类型必须实现了 Comparable 接口。
类型通配符
上界通配符
下届通配符
子主题
子主题
泛型约束
泛型类型的类型参数不能是值类型
不能创建类型参数的实例
不能声明类型为类型参数的静态成员
参数类型不能使用类型转换或 instanceof
不能创建参数类型的数组
不能创建 catch 或 throw 参数化类型对象
仅仅是泛型类相同,而参数类型不同的方法不能重载
最佳实践
reference
深入理解 Java 泛型
泛型与通配符详解
jvm
GC
reference
JVM垃圾回收
JDK 11
TB 级别的 HEAP GC
编译
javac
javap
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容