-------android培训、java培训、期待与您交流! --------
我发现集合框架就是方法多了点 乱了点 整理一下还是感觉挺简单的
2. 数组也是用来存储的容器那么它跟集合有什么区别呢 ?
数组虽然能储存对象, 但是它的长度是固定的 而集合的长度是可以改变的 数组可以存放基本数据类型也可以存放对象 而集合呢只可以放对象
3.总结一下集合的特点吧
其实我们可以给他们拆分成两大块的
5.一个是collection接口里面主要包括list和set两个子接口其中list接口下面有两个经常用的实现类LinkedList 和ArrayList
* 因为collection是接口所以只能通过子类来实现的
* list可存放重复元素,元素存取是有序的里面存放的数据都是有序的 因为底层数据结构是数组其中链表 底 层也是数组
*set不可以存放重复元素,元素存取是无序的(你手写的存入与打印出来的可能不一样 它是根据hash值进行存储的)
* 因为Collection这个接口继承了Iterable<E>这个接口所以实现Collection接口的集合取出元素的方式都是 iterator() //返回在此 collection 的元素上进行迭代的迭代器。而这个迭代器是Iterable但是因为接口没有构造所以返回的是它的子类对象
/*
* Iterator的使用:
*
* Collection中的iterator()返回的是一个Iterator.
* 记住:返回的其实是一个迭代器的子类对象.但是,你可以用Iterator这个接口来接收这个子类对象.多态.
*
* Iterator:
* 1:boolean hasNext()
如果仍有元素可以迭代,则返回 true。
2:Object next()
返回迭代的下一个元素。
NoSuchElementException 你已经取到最后一个元素了.你还继续取元素,就会抛出该异常.
*/
List除了实现collection接口的方法外 它还有特有的方法:
void add(int index ,E element) * 在列表的指定位置添加指定的元素
object get(int index) * 返回列表中指定位置的元素
int indextOf(object) * 返回指定元素第一次出现的索引
ListIterator<E> listIterator() * 列表迭代器 它可以逆向遍历集合
object remove(int index) * 移除列表中指定的位置元素
List subList(int fromIndex, int toIndex) * 返回列表中指定的fromIndex(包括 )
和toIndex(不包括)之间的部分视图。
按照起始和结束索引截取了一个子List
用List接收(截取的时候是左闭右开)
其中ArrayList和LinkedLis 是List的两个最常用的实现子类
ArrayList 数据结构是数组 线程不安全 查询速度快
LinkedList 数据结构是链表 线程不安全 增删速度快
**这两个效率比较高因为线程不安全**
Vector 数据结构是数组 线程安全 增删速度快
(被ArrayList取代)
***************随便写的一个遍历集合的小例子*************
package collection.jihe;
import java.util.ArrayList;
import java.util.Iterator;
public class ListDemo {
/**
* 遍历ArrayList集合
*/
public static void main(String[] args) {
Student s=new Student();//自定义类
ArrayList arr=new ArrayList();
s.setName("ZhangSan");
s.setAge(20);
Student s1=new Student();
s1.setName("lisi");
s1.setAge(23);
arr.add(s);//讲自定义对象放入集合
arr.add(s1);
Iterator<Student> it=arr.iterator();//获取迭代器 用于取出集合中的元素
while (it.hasNext()) {//迭代取值的过程
Student ss=it.next();
System.out.println(ss.getName()+" "+ss.getAge());
}
}
}
--------- android培训、java培训、期待与您交流! ----------