---------------------- android培训、java培训、期待与您交流! ----------------------
1:Collection
Collection(集合)接口,直系子接口List,Set.只能存储单个元素,不能存储基本数据类型,可以存储对象,或者引用数据类型
|--List 元素有序,可重复.
add(index,Object),get(index),set(index,Object),listIterator()
|--ArrayList 数据结构是数组,不是同步的.查询效率高,增删效率低.
|--Vector 数据结构是数组,是同步的.所以,它查询,增删效率都低.
addElement(Object),elementAt(index),elements();
|--LinkedList 数据结构是链表,不是同步的.查询效率低,增删效率高.
removeFirst()----pollFirst()
1.6后,对获取,移除等方法进行了改进,
改进前,集合为空时,会发生一个NoSuchElementException异常.
改进后的方法,但集合为空时,会返回给我们一个null.
Set
|--HashSet 底层数据结构是哈希表
如何去掉重复值的呢?
需要重写hashCode和equals方法.
1:先判断hashCode值是否想等.
2:如果不相等,则直接存储数据.
如果相等,继续跟进equals方法进行判断(equals里面使我们自己写的)
|--LinkedHashSet 底层数据结构是哈希表和链表 能够让Set看起来有序.
由哈希结构保证数据的存储.由链表结构保证元素有序.
|--TreeSet 底层数据结构是二叉树
是可以对元素进行排序的Set集合.
排序有两种方式:
1:自定义对象实现Comparable接口
2:自定义比较器(实现Comparator接口)
以自定义比较器为主.
2:Map
Map采用键值对的存储方式.这点与Collection不同.
(1)是一个以键值对的方式存储数据的.
(2)Map 键唯一
put(k,v),remove(k),keySet(),entrySet(),get(k),size()
|--Hashtable
底层数据结构是哈希表,同步.
|--HashMap
底层数据结构是哈希表,不同步.
|--LinkedHashMap
|--TreeMap
|底层数据结构是二叉树,不同步.
举例:通过TreeSet集合实现可重复元素加入,并且通过两种排序方法对元素进行排序.
//定义的学生类.
package IO_Demo;
public class Student implements Comparable<Student>{
private String name;
private int age;
private int score;
public Student() {
super();
}
public Student(String name, int age, int score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override//排序一:实现compareTo方法实现按年龄排序,
public int compareTo(Student s) {
int x = 0;
if(this.age>s.age){
x=1;
}else//这里可以添加重复元素不要返回为0的情况.
x=-1;
return x;
}
}
//创建TreeSet集合,并初始化.
package IO_Demo;
import java.util.Iterator;
import java.util.TreeSet;
/*
用TreeSet集合实现可重复,并按自己的意思实现排序
*/
public class TreeSet_Demo {
public static void main(String[] args) {
TreeSet<Student> ts = new TreeSet<Student>(new compareByScore());
ts.add(new Student("张三", 23, 84));
Student s1 = new Student("李四", 25, 97);
ts.add(s1);
ts.add(new Student("李四", 25, 97));
ts.add(new Student("老毕", 46, 66));
ts.add(new Student("王五", 45, 88));
ts.add(new Student("王麻子", 33, 86));
ts.add(new Student("张三", 23, 84));
Iterator<Student> it = ts.iterator();
while (it.hasNext()) {
Student s = it.next();
System.out.println(s.getName()+"," + s.getAge()+"," + s.getScore());
}
}
}
//排序二:Comparator接口.自定义比较器安装成绩排序
package IO_Demo;
import java.util.Comparator;
public class compareByScore implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
int x = 0;
if(s1.getScore()>s2.getScore()){
x=1;
}else{
x=-1;
}
return x;
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------