数组集合的区别:
数组是固定长度的,集合是可变的
数组只能存同一种类型的,集合可以存任意类型的对象的
Collection中的共性方法:
1、添加
<1>.boolean add(E e) 确保此 collection 包含指定的元素(可选操作)。
a,add的参数是Object类型,以便于接受任意类型对象。
b,集合中存储的都是对象的引用(地址);
<2>.boolean addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
2、获取长度 int size()
返回此 collection 中的元素数。
3、删除元素
<1>.移除一个元素boolean remove(Object o)
从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
<2>.清空缓冲区; void clear()
移除此 collection 中的所有元素(可选操作)。
4、判断元素:
boolean contains(Object o)
如果此 collection 包含指定的元素,则返回 true。
boolean isEmpty()
如果此 collection 不包含元素,则返回 true。
5、boolean retainAll(Collection<?> c) (取交集)
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作
6、boolean removeAll(Collection<?> c)
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
7、 boolean containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,则返回 true
8、Iterator<E> iterator()
返回在此 collection 的元素上进行迭代的迭代器。
9、Object[] toArray()
返回包含此 collection 中所有元素的数组。
<T> T[] toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
常用子类;
|--List:元素有序,可以重复,有索引
特有方法:
增:
void add(int index, E element) 在列表的指定位置插入指定元素(可选操作)。
addAll(index ,Collection);
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(from,to);
ListIterator();
注意;在迭代的时候,不能用集合对象进行添加或者删除元素。
但是可以使用Iterator中的方法。但是只有删除。
出现 List集合特有的迭代器ListIterator 只有List集合存在
void add(E e)
将指定的元素插入列表(可选操作)。
boolean hasNext()
以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。
boolean hasPrevious()
如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
E next()
返回列表中的下一个元素。
int nextIndex()
返回对 next 的后续调用所返回元素的索引。
E previous()
返回列表中的前一个元素。
int previousIndex()
返回对 previous 的后续调用所返回元素的索引。
void remove()
从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。
void set(E e)
用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。
常用实现子类
|--ArrayList 1.2
底层是数组结构:线程不同步
判断元素是否存在只依赖equals方法
特点 查找速度快,增删速度较慢。
|--LinkedList
底层是链表结构:
特点:查找速度较慢,增删速度较快
特有方法:
addFirst();
addLast();
getFirst();
getLast();
获取不 删除元素 如果没有元素有异常
removerFirst();
removerLast();
获取并删除元素 如果没有元素有异常
1.6代替方法
offerFirst();
offerLast();
peekFirst();
peekLast();
获取不删除元素,如果没有元素 返回null
pollFirst();
pollLast();
获取删除元素,没有元素返回null
|--Vector 1.0;
底层是数组数据结构:线程同步
被ArrayList替代了
特有方法 枚举 Enumeration en = v.elements();和迭代一样;
|--Set:无序 不可以重复(存入和取出的顺序不一定一致)
|--HashSet 底层是hash表结构
HashSet 是如何保证元素的唯一性:
通过元素的两个方法,hashCode和equals方法来完成。如果hashCode值相同,才会调用equals方法进一步判断
注意:判断和删除元素必须依赖hashCode值和equals方法; 先判断hashCode值再有equals方法进行判断
|--TreeSet 底层是二叉树
TreeSet可以对元素排序
保证数据的唯一性:底层调用了compareTo方法
排序方式一:让元素自身具备比较性实现Comparable接口复写compareTo方法
排序方式二:当元素自身不具备比较性时让集合自身具备比较性
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String args[]){
//TreeSet ts = new TreeSet();// 第一种排序方式 元素自身
TreeSet ts = new TreeSet(new myCompare() );//第二种排序方式 集合自身
ts.add(new Person1("zhou06",15));
ts.add(new Person1("zhou05",16));
ts.add(new Person1("zhou04",17));
ts.add(new Person1("zhou03",18));
ts.add(new Person1("zhou02",19));
ts.add(new Person1("zhou01",20));
Iterator it =ts.iterator();
while(it.hasNext()){
Object obj =it.next();
Person1 p = (Person1)obj;
System.out.println(p.getName()+"::"+p.getAge());
}
}
public static void method_reverce(){
TreeSet ts = new TreeSet();
ts.add(1);
ts.add(2);
ts.add(4);
ts.add(6);
ts.add(3);
Iterator it =ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
class myCompare implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Person1 p1 = (Person1)o1;
Person1 p2 = (Person1)o2;
int num =p1.getName().compareTo(p2.getName());
if(num==0){
//Integer i = new Integer(p1.getAge());
return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
}
return num;
}
}
class Person1 implements Comparable{
private String name;
private int age;
Person1(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
@Override
public int compareTo(Object obj) {
if(!(obj instanceof Person1)){
return -1;
}
Person1 p = (Person1)obj;
System.out.println(this.name+"...compareTo...."+p.name);
if(this.age> p.age)
return 1;
if(this.age==p.age)
{
return this.name.compareTo(p.name);
}
return -1;
}
}
|
|