Day08

Posted Layman52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day08相关的知识,希望对你有一定的参考价值。

Day08:集合上

  • 集合只能装引用类型

  • StringBuffer:jdk1.0

  • StringBuilder:jdk1.5

  • 泛型:jdk1.5

  • 都可以用增强for和迭代器来遍历

  • 31这个质数可以减少散列冲突

  • 31可以提高执行效率:31*i=i<<5-i

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方法

  1. 判断是否为同一对象

  2. 判断是否为空

  3. 判断是否属于同一类型

  4. 强转为该类型

  5. 比较属性

传统重写:

@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的主要内容,如果未能解决你的问题,请参考以下文章

Day08

day08

2016-01-20_11S_08day

[Android开发学习] day07 &amp; day08

# Day08-Java基础

day-7 city 1