1、基本数据类型对象包装类
常用操作之一:用于基本数据类型和字符串之间的转换
基本类型--->字符串
*基本类型+“”
*用String类中的静态方法ValueOf(基本数据类型值)
*用Integer类中的静态方法ValueOf(基本数据类型值)
字符串---->基本类型
*使用包装类中的静态方法parseInt()或其他parseLong()等等parseXxx()
*如果字符串被Integer进行对象的封装,可以使用另一个非静态方法,intValue(),经一个Integer对象转换成基本数据类型值。
Integer i=new Integer(“123”);
i.intValue(i);//基本数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
jdk1.5以后,自动装箱,如果装箱的是一个字节,那个该数据会被共享,不会重新开辟新空间
Integer x=127;
Integer y=127;
x==y;//true,如果是128以上则为false
2、集合类
*用于存储对象的容器
*集合的长度是可变的
*集合中不可以存储基本数据类型
集合容器因为内部的数据结构不同,有多种具体容器。不断的向上抽取,就形成了集合框架。
框架顶层Collection接口
Collection常用方法:
*增加
boolean add(Object obj);
boolean addAll(Collection coll)
*删除
boolean remove(Object obj);
boolean removeAll(Collection coll);//将两个集合中相同元素从调用removeAll的集合中删除
void clear();
*判断
boolean contains(Object obj);
boolean containsAll(Collections coll);
boolean isEmpty();判断集合是否有元素
*获取
int size();
Iterator iterator();取出元素的方式:迭代器
该对象必须依赖于具体容器,因为每一个容器的数据结构都不同,所以该迭代器对象是在容器中进行内部实现的。
*其他
boolean retainAll(Collection coll);取交集
Object [] toArray();集合转换成数组
Collection
|_List:有序(存入和取出顺序一致,元素都有索引。允许重复元素
|_Set:元素不重复,无序。
List:特有常见方法,有一个共性特点,都可以操作角标
*添加
void add(index,element);
void add(index,collection);
*删除
object remove(index);
*修改
object set(index,element);
*获取
Object get(index)
int indexOf(object);
int lastIndexOf(object)
List subList(from,to);
3、在迭代器过程中,不要使用集合操作元素,容易出现异常。可以使用Iterator接口的子类ListIterator来完成在迭代中对元素进行更多的操作。
ListIterator可以实现在迭代过程中完成对元素的增删改查,注意只有list集合具备该迭代功能。
例子:
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
if(obj.equas("abc"){
list.add("aad");//使用迭代器过程,集合操作了元素
}
}
List集合是可以完成对元素的增删改查
List:
|_Vector:内部是数组数据结构 ,是同步的,线程安全的。
|_ArrayList:内部是数组数据结构,是不同步的。替代了vector,查询速度快。
|_LinkedList内部是链表数据结构,是不同步的,增删元素的速度很快。
addFirst()
addLast()
jdk1.6
offerfist()
offerLast()
getFist() //获取但不移除,如果链表为空,则抛出NoSuchElementException
getLast()
jdk1.6:peekFirst()获取但不移除,如果链表为空,则返回null
peekLast()
removeFist() //获取并移除,如果链表为空,则抛出NoSuchElementException
removeLast()
jdk1。6
pollFirst()获取但不移除,如果链表为空,则返回null
pollLast()
4、Set集合:元素不可以重复,是无序。
set接口中的方法和Collection一致。
|_HashSet内部数据结构是哈希表,是不同步的。
HashSet集合数据结构是哈希表,所以存储元素的时候,使用的元素的hasCode方法来确定位置,如果位置相同,在通过元素的equals来确定是否相同。
哈希表确定元素是否相同
1)判断的是两个元素的哈希值是否相同。如果相同,再判断两个对象的内容是否相同。
2)判断哈希值相同,其实判断的是对象的hashCode的方法。判断内容相同用的是equals方法。
注意:如果哈希值不同,是不需要判断equals。
HashSet的子类LinkedHashSet:有序的
|_TreeSet:内部是二叉树数据结构。可以对set集合中的元素进行排序,是不同步的。判断元素唯一性的方式:就是根据比较方法的返回结果,是否是0.是就是相同元素,不存入。
TreeSet对元素进行排序的方式之一,让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。
如果不要按照对象中具备的自然顺序排序,如果对象中不具备自然顺序,怎么办?
可以使用TreeSet集合的第二种排序方式:让集合自身具备比较功能。定义类实行Comparator接口,覆盖compare方法,将该类对象作为参数传递给Treeset集合的构造函数。