基本数据类型对象+集合对象

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集合的构造函数。



你可能感兴趣的:(java学习)