Day08
Posted Layman52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day08相关的知识,希望对你有一定的参考价值。
注
-
集合只能装引用类型
-
StringBuffer:jdk1.0
-
StringBuilder:jdk1.5
-
泛型:jdk1.5
-
都可以用增强for和迭代器来遍历
-
31这个质数可以减少散列冲突
-
Collection
直接子类有List和Set
方法
boolean add(Object obj)
boolean addAll(Collection c)
void clear()
boolean contains(Object obj)
boolean equals(Object o)
boolean isEmpty()
boolean remove(Object o)
int size()
Object[] toArray()
Iterator iterator()
遍历
foreach也可以遍历集合
Iterator迭代器:
hasNext()
next()
remove()
List
有序、有下标、可重复
方法
void add(int index,Object o)
boolean addAll(int index,Collection c)
Object get(int index)
List subList(int fromIndex,int toIndex)
ListIterator
列表迭代器既可以向前向后遍历,也可以增删改元素
int nextIndex()
int previousIndex()
Object previous()
boolean hasPrevious() //逆序遍历用
实现类
ArrayList:
数组结构;查询快、增删慢;jdk1.2;运行效率快,线程不安全
Vector:
数组结构;查询快、增删慢;jdk1.0;运行效率慢,线程安全
LinkedList:
链表结构;查询慢、增删快
Set
无序、无下标、不能重复
并没有自己的方法,全部继承自Collections
HashSet
TreeSet
利用hashCode来去重
ArrayList
add()
remove()
contains()
isEmpty()
size()
源代码:
默认容量是10;但没有添加任何元素时,容量为0,添加一个元素,容量为10
每次扩容大小,是原来的1.5倍
重写equals方法
-
判断是否为同一对象
-
判断是否为空
-
判断是否属于同一类型
-
强转为该类型
-
比较属性
传统重写:
@Override
public boolean equals(Object o){
if(this==o)return true;
if(o==null)return false;
if(o instanceof this.getClass()){
this.getClass() t = (this.getClass())o;
if(this.Xxx.equals(t.getXxx())&&this.Yyy==t.getYyy())return true;
}
return false;
}
Idea快捷重写:
@Override
public boolean equals(Object o){
if(o==this)return true;
if(o==null||getClass() != o.getClass())return false;
getClass() t = (getClass())o;
return this.Xxx.equals(t.getXxx())&&this.Yyy==t.getYyy();
}
Vector
add()
remove()
elements() //遍历器
hasMoreElements()
nextElements()
contains()
isEmpty()
LinkedList
存储结构:双向链表
源码:
Node first //头节点
Node last //尾节点
泛型
泛型类、泛型接口、泛型方法
T:占位符
泛型只能是引用类型
不能用泛型修饰静态
好处:
-
提高代码的重用性
-
防止类型转换异常,提高代码的安全性
泛型类
泛型属性、泛型参数
泛型接口
泛型属性、泛型返回值、泛型参数
泛型方法
<T>占位符放在返回值前面
泛型参数
泛型集合
HashSet
利用hashCode来计算存储位置
存储结构:哈希表(数组+链表+红黑树)
重写hashCode
@Override
public int hashCode(){
int result = this.Xxx.hashCode();
result += this.Yyy.hashCode();
return result;
以上是关于Day08的主要内容,如果未能解决你的问题,请参考以下文章