对象数组:可以存储(引用类型的)的数组。
集合:
数组和集合的区别:1:长度的区别:
数组长度固定
集合长度可变
2:存储数据类型的区别:
数组:可存储基本数据类型,还有引用类型
集合:只有引用类型
3:存储元素的区别:
数组:只能存储同一种类型的元素
集合:可存储多种类型的元素
获取集合的元素数:size();
集合的遍历:
1:toArray():将集合转换成数组,返回值是一个Object类型. 2:集合的专有遍历方式:获取集合的迭代器
Iterator it=集合对象.iterator();
while(it.hasNext()){
//获取
String s=(String)it.next();
}
interface Iterator{
boolean hasNext();
Object next();
}
interface Collection extends Iterable{}
interface List extends Collection{}
class ArrayList<>implements List{
return new Itr();
class Itr implements Iterator{
}
}
集合(Collection)的高级功能
boolean retainAll(Collection c):
交集功能
List集合:
List集合是Collection集合子接口,就可以使用父接口中的迭代器
List特点:元素可重复,并且有序性(存储与取出一致)
与set集合的区别:set集合元素唯一,
遍历集合:
1)toArray()
2)迭代器功能:Iterator Iterator()
3)列表迭代器:ListIterator listIterator();里面添加元素的功能
4)普通for循环,用size()和get(intindex)相结合
正则表达式
分割功能
ArrayList:底层数据结构是数组的形式,满足数组结构的特点:查询快,增删慢
从数组线程安全的角度来讲,线程不安全,不同步,执行效率高
Stringbuffer:多线程不安全的
Stringbuilder:单线程安全
Vector:
底层数据结构是数组形式,查询快,增删慢
线程安全的类,同步,执行效率低,
LinkedList:
底层数组结构是链表形式, 查询慢,增删快。
线程不安全的一个类,不同步,执行效率高。
特有功能:
添加功能:public void addFirst(E e)将制指定元素插入列表的开头
Last
获取功能:public Object getFirst() 返回此列表的第一个元素
Last()
删除功能: public Object removeFirst() 删除
Last
参与多线程,一般都需要安全的类:
StringBuffer,Vector<E>,hashtable<K,V>
Synchronized(同步对象){
代码;
}
、一般情况下主要:ArrayList()
LinkList:
向上转型不会出现任何问题,但向下转型系统不会自动识别.
将泛型定义在类中. 给类上加入泛型
泛型的高级:通配符
<?>:可以是任意类型,包括Object类型以及任意Java类型
※ Eg:Collection<?> c1=new ArrayList<Object>();
<? Extends E>:向下限定,E类型以及E类型的子类.
※ Eg:Collection<? Extends Object> c2=new ArrayList<Object或子类>();
<? Super E>:向下限定,E类型以及E类型的父类
※ Eg: Collection<? super Ainimal > c2
=new ArrayList<Ainimal或父类最起码是Ainimal>();
自动拆装箱:类型转换
增强for
for(类型 X: 对象名){
System.out.println(X);
}
迭代器遍历:
ArrayList<String> array=new ArrayList<String>();
Array.add(“XXX”);
Iterator<String> it=array.Iterator();
while(it.hasnext()){
String s=it.next();
System.out.println(s);
}
增强for的出现就是替换迭代器的`
使用ArrayLIst集合储存自定义对象并遍历
1:toArray()
2:Collection集合的迭代器:Iterator Iterator();
3:List集合的迭代器
4:普通for循环:size();和get( int index)
5:增强for循环