黑马程序员_集合

------- android培训java培训、期待与您交流! ----------


1:集合

(1)java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。

   而对多个元素进行存储,前面我们学习过数组,数组的弊端,长度固定。这样,数组将不能

   满足变化的要求。所以,java就提供了集合供我们使用。

(2)集合的特点:

A:长度可以发生改变

B:只能存储对象

C:可以存储多种类型对象(一般存储的还是同一种)

(3)集合和数组的区别

A:长度问题

数组固定

集合可变

B:存储元素问题

数组可以是基本类型,也可以是引用类型。

集合只能是引用类型。

C:是否同一类型

数组元素类型一致。

集合元素类型可以不一致。

(4)集合体现的由来

集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类。

而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系

结构。

 

数据结构:数据存储的方式。

 

Collection

|--List

|--ArrayList

|--Vector

|--LinkedList

|--Set

|--HashSet

|--TreeSet

(5)如何学习和使用一个继承体系呢?

学习顶层:因为顶层定义的是共性内容。

使用底层:因为底层才是具体的实现。

 

2:Collection的功能

(1)Collection的功能

A:添加功能

boolean add(Object obj):   添加元素

boolean addAll(Collection c):  添加一个集合元素

B:删除功能

void clear():    删除所有元素

boolean remove(Object obj):    删除指定元素

boolean removeAll(Collection c): 删除指定集合元素  

C:判断功能

boolean isEmpty():  判断集合是否为空

boolean contains(Object obj): 判断集合中是否存在指定的元素

boolean containsAll(Collection c):判断集合中是否存在指定的集合元素

D:遍历功能

Iterator iterator(): 获取集合中的每一个元素

E:长度功能

int size():  获取集合的长度

F:交集功能

boolean retainAll(Collection c):判断两个集合中是否有相同的元素

G:转换功能

Object[] toArray(): 把集合转换成数组

(2)迭代器的使用

A:使用步骤

a:通过集合对象获取迭代器对象。

b:通过迭代器对象判断。

c:通过迭代器对象获取。

B:迭代器原理

由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。

这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种

集合的时候,只要该集合内部实现这个接口即可。

C:迭代器源码

public interface Iterator

{

public abstract boolean hasNext();

public abstract Object next();

}

 

public interface Collection

{

public abstract Iterator iterator();

}

 

public interface List extends Collection

{

...

}

public class ArrayList implements List

{

public Iterator iterator()

{

return new Itr();

}

 

private class Itr implements Iterator

{

public boolean hasNext(){...}

public Object next(){...}

}

}

(3)集合的常见使用步骤:

A:创建集合对象

B:创建元素对象

C:把元素添加到集合中

D:遍历集合

a:通过集合对象获取迭代器对象。

b:通过迭代器对象判断。

c:通过迭代器对象获取。

(4)Collection存储字符串和自定义对象并遍历。

A:存储字符串

Collection c = new ArrayList();

 

//String s = "hello";

//c.add(s);

c.add("hello");

c.add("world");

c.add("java");

 

Iterator it = c.iterator();

while(it.hasNext())

{

String s = (String)it.next();

System.out.println(s);

}

 

 

B:存储自定义对象

collection c = new ArrayList();

Student s1 = new Student("张三",13);

c.add(s1);

Iteractor it = c.iteractor();

while(it.hasNext())

{

Student s = (Student)it.next();

System.out.println(s);

}

3:List的特有功能

(1)List的特有功能

A:添加功能

void add(int index,Object obj):  在指定索引处添加元素

B:删除功能

Object remove(int index):  在指定索引处删除元素,并把元素返回.

C:修改功能

Object set(int index,Object obj):  修改指定索引处的元素,并把修改前的元素返回

D:获取功能

Object get(int index):  获取指定位置的元素

int indexOf(Object obj):获取指定元素第一次出现的索引值

ListIterator listIterator():返回此集合的列表迭代器

(2)List的遍历方式

A:Iterator迭代器

B:ListIterator迭代器

C:普通for

(3)ListIterator迭代器

A:是Iterator的子接口。

B:有自己的特有功能,可以逆向遍历数据,但是需要先正向遍历。一般不用。

(4)面试题:并发修改异常

A:并发修改异常的产生原因

用迭代器遍历集合,用集合去操作集合。

B:解决方案:

a:使用集合操作。

b:使用列表迭代器操作。

(5)List集合存储字符串和自定义对象并遍历。

A:存储字符串

List list = new ArrrayList();

list.add("weref");

list.add("dfdfd");

list.add("fdfdfde");

Iterator it = list.Iterator();

while(it.hasNext())

{

String s = (String)it.next();

System.out.println(s);

}

B:存储自定义对象

List list = new ArrayList();

Student s1 = new Student("dfdf");

list.add(s1);

 

for(int x = 0;x<list.size();x++)

{

Student s = (Student) list.get(x);

System.out.println(s);

}

------- android培训java培训、期待与您交流! ----------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值