黑马程序员_集合
2014-01-04 17:10
183 查看
------- 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培训、期待与您交流!
----------
相关文章推荐
- 黑马程序员_多态与继承
- 黑马程序员_正则表达式
- 黑马程序员--高新技术之多线程
- 怎样花两年时间去面试一个人
- 国外程序员推荐:每个程序员都应读的书
- 黑马程序员《java基础总结(十)》(泛型、API)
- 老程序员的中年危机(评论更精彩)
- 职场圣经1(转载)
- 【黑马程序员】Java基础05:多线程与其安全问题
- 黑马程序员——学习笔记09.Java_IO流
- [LeetCode] Longest Common Prefix
- 面试五大技巧
- 黑马程序员——学习笔记08.Java集合
- 黑马程序员——学习笔记07.Java异常机制
- 黑马程序员 io中的缓冲字符流,装饰设计模式(毕向东)
- [LeetCode] Convert Sorted Array to Binary Search Tree
- [LeetCode] Pascal's Triangle
- 面试题之自创 大数相除
- [LeetCode] Path Sum II
- [LeetCode] Path Sum