您的位置:首页 > 编程语言 > Java开发

04Java语法回顾_collection

2015-12-16 13:48 543 查看

Java语法Collection

读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。

Collection由来

/*
* 集合:
*      由于我们使用的是面向对象语言,所以,我们要经常使用对象。而很多时候,我们可能需要使用很的对象,
*      这个时候,我们就只能使用以前讲过的数组进行存储了,而数组的特点是长度固定。
*      这样的话就不适合变化的数据。所 以,java重新提供了一种容器,用于存储对象,这种容器叫集合。
*
* 集合的特点:
*      A:长度是可以发生改变的。
*      B:集合只能存储对象。
*
* 集合和数组的区别?
*      数组:
*          数组长度固定。
*          数组可以存储基本数据类型,也可以存储引用类型。
*          数组存储的数据类型是一致的。
*      集合:
*          集合长度可变。
*          集合只能存储引用类型。
*          集合可以存储不同类型的对象。
*
* 我们的集合这种容器,由于数据结构不同,所以,java就对应的提供了很多种集合类,供我们使用。
*
* 数据结构:就是数据的组织(存储)方式。
*
* 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():把集合变成数组。
*/


Collection代码测试

public class CollectionDemo {
public static void main(String[] args) {
// 创建对象
// Collection c = new Collection();//接口不能被实例化
Collection c = new ArrayList();//多态的特点:编译时期看左边父类方法,运行时期使用右边的子类方法

// 添加元素
// boolean add(Object obj):一个是添加,一个是返回添加是否成功。
// System.out.println(c.add("hello"));
// c.add("world");
c.add("hello");
c.add("world");
c.add("java");

// 删除功能
// void clear():删除集合中的所有元素。
// c.clear();
// boolean remove(Object obj)// 删除某个元素
// System.out.println("remove:"+c.remove("world"));
// System.out.println("remove:"+c.remove("wor"));

// 判断功能
// boolean isEmpty()
// System.out.println("isEmpty:"+c.isEmpty());
// boolean contains(Object obj)
//      System.out.println("contains:" + c.contains("world"));
//      System.out.println("contains:" + c.contains("wor"));

// 长度功能
// int size()
System.out.println("size:" + c.size());

System.out.println("c:" + c);
}
}


Iterator(迭代器)详解

/*
* Iterator iterator():就是用来获取集合中每一个元素。
*
* 成员方法:
*      Object next():获取元素,并自动移动到下一个位置等待获取。
*      boolean hasNext():判断迭代器中是否还有元素。
*
* NoSuchElementException:没有这样的元素异常。你已经获取到元素末尾了,你还要获取,已经没有元素了。所以报错了。
*/


Iterator(迭代器)代码测试

public class IteratorDemo {
public static void main(String[] args) {
// 创建对象
Collection c = new ArrayList();

// 添加元素
c.add("hello");
c.add("world");
c.add("java");

// 方式1 把集合转为数组,通过for循环遍历取出数据
// Object[] objs = c.toArray();
// for (int x = 0; x < objs.length; x++) {
// String s = (String) objs[x];
// System.out.println(s);
// }

// 方式2
// Iterator iterator():就是用来获取集合中每一个元素。
// 通过集合对象获取迭代器对象
Iterator it = c.iterator();// 这是返回的是Iterator的子类对象,多态

while (it.hasNext()) {
// System.out.println(it.next());
String s = (String) it.next(); //Object转为String类型
System.out.println(s);
}
}
}


ArrayList集合中的迭代器java源代码解析

//ArrayList集合中的迭代器java源代码解析

//伪代码

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
{
//1 在ArrayList中有一个iterator()方法
public Iterator iterator() {
return new Itr();
}
//ArrayList类中有一个内部类Itr实现自Iterator接口
private class Itr implements Iterator {
public boolean hasNext() {
return xxx;;
}

public E next() {
return xxx;
}
}
}

————————————————————————————————————————
用法:
//多态
Collection c = new ArrayList();
//添加元素
c.add("hello");
c.add("world");
c.add("java);

Iterator it = c.iterator(); //把Itr返回来了,而Itr实现了Iterator接口。所以,这是多态的体现。
while(it.hasNext())
{
String s = it.next();
System.out.println(s);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面向对象 回顾