Collection:
可以存储不同类型的对象,而且随着存储对象的的增加容量自动增加。
添加的都是对象,不能是基本类型。
每种集合存储数据的方式是不同的,也就是使用的数据结构是不同的。
Collection中重要的接口为:List,Set。
List: 存储的对象是有序的,可以重复的。(有序是指集合中对象的顺序和添加对象的顺序是一致的。)
List:
ArrayList LinkedList Vector
ArrayList:底层使用的数据结构是数组,线程不安全的,查找速度快,增删速度慢。
Linkedlist:底层使用的数据结构是链表,线程不安全的,查找速度慢,增删速度快。
Vector:与ArreayList类似,但是线程安全的,被ArrayList取代。
Set: 存储的对象是无序的,不可以重复的。
Set:
HashSet TreeSet
HashSet:底层使用的数据结构是哈希表,线程不安全的。
TreeSet:底层使用的数据结构是二叉树,线程不安全的。
ArrayList:
//去除集合中重复的对象
ArrayList list = new ArrayList();
list.add(“str01”);
list.add(“str02”);
list.add(“str03”);
list.add(“str02”);
ArrayList list2 = new ArrayList();//创建新的集合
for(int i=0;i<list.size();i++)
{
Object obj = list.get(i);
//contains()方法依据的是boolean equals()方法
If(!(list2.contains(obj))
{
list2.add(obj);
}
}
判断两个new 对象是否相同,在new 对象类里重写equals()方法
public boolean equals(Object obj)
{
If(!(obj instanceof Student))
{
throw new ClassCastException();}
}
Student stu = (Student)obj;
return this.age==stu.age && this.name.equals(stu.name);
}
LinkedList:
特有的方法:addFirst(),addFirst()---添加
getFirst(),getLast()---获取
removeFirst(),removeLast()---删除
从jdk1.6开始出现:
offerFirst(),offerLast()---添加
peekFirst(),peekLast()---获取
pollFirst(),pollLast()---删除
HashSet:
保证对象唯一的方式:
1. 在添加对象时先用对象的哈希值和集合中对象的哈希值分别进行比较,如果集合对象的哈希值
都不相同,那么把对象加入集合
2. 如果出现哈希值相同的,那么调用equals()方法返回true则认为是同一对象,不把该对象加入
集合,否则认为是不同的对象,加入集合
TreeSet:
在使用add()添加对象是会对加入集合的对象进行排序调用了compareTo()方法来进行比较(按字典顺序)
1.排序方式一:
集合中对象所属的类实现了comparable接口中的 int compareTo(Object obj)方法,TreeSet依据该方法 进行排序
保证对象唯一的方式:compareTo()返回值为0,则对象相同
2.排序方式二:
自定义一种排序方式,实现接口Comparator中的 int compare(Object obj)方法
注意:当TreeSet存在自定义排序方式时,自定义排序优先
可以存储不同类型的对象,而且随着存储对象的的增加容量自动增加。
添加的都是对象,不能是基本类型。
每种集合存储数据的方式是不同的,也就是使用的数据结构是不同的。
Collection中重要的接口为:List,Set。
List: 存储的对象是有序的,可以重复的。(有序是指集合中对象的顺序和添加对象的顺序是一致的。)
List:
ArrayList LinkedList Vector
ArrayList:底层使用的数据结构是数组,线程不安全的,查找速度快,增删速度慢。
Linkedlist:底层使用的数据结构是链表,线程不安全的,查找速度慢,增删速度快。
Vector:与ArreayList类似,但是线程安全的,被ArrayList取代。
Set: 存储的对象是无序的,不可以重复的。
Set:
HashSet TreeSet
HashSet:底层使用的数据结构是哈希表,线程不安全的。
TreeSet:底层使用的数据结构是二叉树,线程不安全的。
ArrayList:
//去除集合中重复的对象
ArrayList list = new ArrayList();
list.add(“str01”);
list.add(“str02”);
list.add(“str03”);
list.add(“str02”);
ArrayList list2 = new ArrayList();//创建新的集合
for(int i=0;i<list.size();i++)
{
Object obj = list.get(i);
//contains()方法依据的是boolean equals()方法
If(!(list2.contains(obj))
{
list2.add(obj);
}
}
判断两个new 对象是否相同,在new 对象类里重写equals()方法
public boolean equals(Object obj)
{
If(!(obj instanceof Student))
{
throw new ClassCastException();}
}
Student stu = (Student)obj;
return this.age==stu.age && this.name.equals(stu.name);
}
LinkedList:
特有的方法:addFirst(),addFirst()---添加
getFirst(),getLast()---获取
removeFirst(),removeLast()---删除
从jdk1.6开始出现:
offerFirst(),offerLast()---添加
peekFirst(),peekLast()---获取
pollFirst(),pollLast()---删除
HashSet:
保证对象唯一的方式:
1. 在添加对象时先用对象的哈希值和集合中对象的哈希值分别进行比较,如果集合对象的哈希值
都不相同,那么把对象加入集合
2. 如果出现哈希值相同的,那么调用equals()方法返回true则认为是同一对象,不把该对象加入
集合,否则认为是不同的对象,加入集合
TreeSet:
在使用add()添加对象是会对加入集合的对象进行排序调用了compareTo()方法来进行比较(按字典顺序)
1.排序方式一:
集合中对象所属的类实现了comparable接口中的 int compareTo(Object obj)方法,TreeSet依据该方法 进行排序
保证对象唯一的方式:compareTo()返回值为0,则对象相同
2.排序方式二:
自定义一种排序方式,实现接口Comparator中的 int compare(Object obj)方法
注意:当TreeSet存在自定义排序方式时,自定义排序优先