《黑马程序员》java笔记->集合矿建的由来,Collection接口,迭代器

时间:2021-04-18 19:35:57

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



public static void main(String[] args) {



/*
* 集合:
* 1,用于存储对象的容器。
* 2,该容器的长度是可变的。

* 集合和数组的区别?
* 1,
* 集合长度是可变的。
* 数组长度是固定的。
* 2,
* 集合中只能存储对象。 
* 数组中即可以存储对象,又可以存储基本类型数值。
* 3,
* 集合中存储的对象可以是任意类型的。
* 数组中只能存储同一类型的对象。

*/

/*
* 集合框架的由来:

* 容器很多,因为每个容器中的数据结构是不同的。
* 数据结构:就是数据在容器中存储方式
* 如果散装鸡蛋和品牌鸡蛋的存储方式。

* 容器虽然因为结构有不同,但是都具备着共性,可以不断地向上抽取。
* 就形成集合框架,该框架的顶层之一就是Collection接口。
* 该接口中定义了集合框架中最共性的功能。

* 最终使用的时候,其实使用的该框架最子类的对象。 


*/

/*
* Collection中有哪些方法呢?
* 1,添加方法。 
* boolean add(object e):一次添加一个元素。
* boolean addAll(Collection):将一个参数容器中的元素添加到当前容器中。
*
* 2,删除方法。
* boolean remove(object):删除一个指定对象。 
* boolean removeAll(Collection):删除指定collection中和本Collection中相同的元素。 
* void clear():直接将集合中的元素清空。
* 3,判断方法:
* boolean contains(object):是否包含指定元素。
* boolean containsAll(Collection):是否包含指定容器中的元素。 
* boolean isEmpty():是否有元素。
* 4,获取元素个数:
* int size():获取元素有几个。
* 5,取交集。
* boolean retainAll(collection):保留和指定collection集合中相同的元素,不相同的元素会被删除。
* 6,将集合转成数组。
* Object[] toArray():
* 7,取出元素的方法:
* Iterator iterator():



*/


// Collection coll = new ArrayList();
// collectionDemo(coll);

Collection c1 = new ArrayList();
Collection c2 = new ArrayList();

collectionAllDemo(c1,c2);

}




/*
* 演示Collection中的基本方法。
*/
public static void collectionDemo(Collection coll){

//1,添加元素。
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");

System.out.println(coll);//"[abc1, abc2, abc3]"

//2,删除元素。
// boolean b = coll.remove("abc22");
// System.out.println(coll);
// System.out.println("b="+b);
//3,清空集合。
// coll.clear();

//4,是否包含某一个元素。
boolean b = coll.contains("abc3");
System.out.println(coll);
System.out.println("b="+b);


}


/*
* 演示Collection中代码All的方法。
*/
public static void collectionAllDemo(Collection c1,Collection c2){


//给这两个集合中存储一些元素。 
// c1.add("abc1");
// c1.add("abc2");
c1.add("abc3");
c1.add("abc4");
// c1.add("abc5");

c2.add("abc3");
c2.add("abc4");
c2.add("abc7");

System.out.println(c1);

//1,添加c2中的元素到c1中。
// c1.addAll(c2);

//2,判断c1是否包含c2中的元素。
// boolean b = c1.containsAll(c2);
// System.out.println("b="+b);

//3,将c1中与c2中相同的元素删除。
// c1.removeAll(c2);

//4,将c1中与c2中相同的元素保留,将不同的删除。
// boolean b = c1.retainAll(c2);//只要c1集合中的元素发生变化,就为true。 不变化就为false。
// System.out.println("b="+b);
System.out.println(c1);

}

--------------------------------------------------------------------------------------------------------------------------------------------------

public static void main(String[] args) {


/*
* 集合一些小细节。

*/
//创建一个集合容器。其实也是一个对象。
//这个对象中存储着特定结构可以对对象进行存储。
Collection coll = new ArrayList();
/*
* 1,存储时,add可以接收任意类型的对象因为参数类型是Object。
* 所以对象元素存入时都被提升为了Object。

* 2,其实在集合中真正存储都是对象的引用。

*/
coll.add(new Object());
coll.add("abc");

/*
* 用迭代器取出时,其实取出的也是引用。
*/


coll.add(5);//可以。jdk1.5后,有了自动装箱机制。相当于new Integer(5).装箱Integer.valueOf(5);
//等同于coll.add(Integer.valueOf(5));//拆箱 intValue();
}

---------------------------------------------------------------------------------------------------------------------------------------------------------

public static void main(String[] args) {


/*
* 一般开发时,最常见的就是往集合存储自定义对象。
* 1,对自定义对象进行描述。  

* 存储时,都被提升为了Object。

* 取出时如果要使用自定义对象的特有方法,一定要进行向下转型。


* 注意事项:在迭代时,循环中只要有一个next()即可
* 。
*/
Collection coll = new ArrayList();

coll.add(new Person("lisi1",21));//添加的时候都被提升为了Object。
coll.add(new Person("lisi2",22));
coll.add(new Person("lisi3",23));
// coll.add(new Person("lisi4",24));

//取出元素。
Iterator it = coll.iterator();

while(it.hasNext()){

Person p = (Person)it.next();
System.out.println(p.getName()+":"+p.getAge());

// System.out.println(((Person)it.next()).getName()+":"+((Person)it.next()).getAge());

}

}

--------------------------------------------------------------------------------------------------------------------------------------



/*
* 迭代器:取出集合中元素的方式的一个对象。该对象本身就内置在容器中。

* 如何获取到集合的迭代器呢?
* 可以通过iterator()方法来完成。该方法返回一个Iterator类型对象。


* 迭代器接口出现:将每一个容器中的取出方式进行了封装。并对外暴露。
* 这样无论是什么容器或者数据结构,只要内部取出方式实现了Iterator接口,
* 都可以通过该接口取出这些容器中的元素。

* 它的出现,将容器的取出方式和容器的数据结构相分离,降低了耦合性。 
* 而取出方式因为直接在访问容器中的元素,并依赖具体的数据结构,所以被定义在了容器中。
* 通过内部类来实现Iterator接口。

* 大型游戏机中抓布娃娃的游戏机中的夹子。就是那个迭代器。 
* 请看该项目中的图片。

* 只要是Collection集合中的容器,迭代器是通用取出方式。 

*/

//创建集合。 
Collection coll = new ArrayList();
//添加元素。
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");


/*
//获取该集合的迭代器对象。
Iterator it = coll.iterator();

//使用迭代器对象中的方法完成元素的获取。 
while(it.hasNext()){
System.out.println(it.next());
}
*/

//将while改成for结构。开发的时候建议写for。
for(Iterator it = coll.iterator(); it.hasNext(); ){
System.out.println(it.next());
}

// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());//next()可以取出元素。而且自动往下取。
}