集合,,,ArrayList集合存储元素,,,Collection接口的基本方法,,, Iterator迭代器,,,集合元素的向下转型

第1章     集合

集合,集合是java中提供的一种容器,可以用来存储多个数据。

数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据

1.1      ArrayList集合存储元素

ArrayList集合存储5个int类型元素

    
public static void main(String[] args){
ArrayList<Integer> arr=new ArrayList<Integer>();
    arr.add(111);
    arr.add(222);
    arr.add(333);
    arr.add(444);
    arr.add(555);
for(int i:arr){
System.out.println(i);
}
}

ArrayList集合存储5个Person类型元素

package com.oracle.Demo01;

import java.util.ArrayList;

public class Jihe {
public static void main(String[] args) {
    ArrayList<Person> arr=new ArrayList<Person>();
    arr.add(new Person("小红",12));
    arr.add(new Person("小丸子",13));
    arr.add(new Person("薯条",15));
    arr.add(new Person("可乐",17));
    arr.add(new Person("汉堡",10));
    for(Person i:arr){
        System.out.println(i);
    }
}
}
package com.oracle.Demo01;

public class Person {
String name;
int age;

@Override
public String toString() {
    return "Person [name=" + name + ", age=" + age + "]";
}

public Person(String name, int age) {
    super();
    this.name = name;
    this.age = age;
}

}

1.2      集合的继承实现关系

 

 List有序,允许元素重复。set无序,不允许元素重复

1.3    Collection接口的基本方法

 

 

创建集合的格式:

 

 

方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式

方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。

 

//创建集合
Collection coll = new ArrayList();
//1,往集合中添加对象元素。add(E e)方法,E代表创建集合时所指定的数据类型如<String>,那么,E就代表String类型;创建集合时若没有指定数据类型,那么,E就代表Object类型。
coll.add("abc");
coll.add("ef");
coll.add("g");        
//把集合打印一下。
System.out.println(coll); //打印结果为:[abc, ef, g]
System.out.println(coll.toString()); //打印结果为:[abc, ef, g]
//2,从集合中删除元素。remove(Object o)方法
coll.remove("ef");        
//删除后,集合元素为[abc, g]
//3,判断集合中是否包含指定元素。contains(Object o)方法
System.out.println(coll.contains("abc"));//判断coll里有没有abc
//打印结果为true
System.out.println(coll.contains("ef"));
//打印结果为false
    
//4,获取集合元素个数。size()方法
System.out.println(coll.size());
//打印结果为2
 
//5,返回包含集合中所有元素的数组。toArray()方法
String[] array = coll.toArray();
//数组中的元素为{"abc", "g"}
 
//6,清除集合元素。remove()方法
coll.clear();
//清空后,集合元素为[],代表没有元素

第2章     Iterator迭代器

 

 

hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

 

 

1.1      Iterator迭代方式的代码体现

在Collection接口描述了一个抽象方法iterator方法,所有Collection子类都实现了这个方法,并且有自己的迭代形式。

 

 

//1,创建集合对象。
Collection<String> coll = new ArrayList<String>();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
 
//2.获取容器的迭代器对象。通过iterator方法。
Iterator it = coll.iterator();
 
//3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
while(it.hasNext()){
    System.out.println(it.next());
}
 
/*
迭代器for循环的形式的使用
for (Iterator i = coll.iterator(); i.hasNext(); ) {
    System.out.println(it.next());
}
*/

 

      

     集合元素的向下转型

Collection coll = new ArrayList();//不声明类型
coll.add("abc");
coll.add("aabbcc");
coll.add(1);
Iterator it = coll.iterator();
while (it.hasNext()) {
    //由于元素被存放进集合后全部被提升为Object类型
//当需要使用子类对象特有方法时,需要向下转型
    String str = (String) it.next();
    System.out.println(str.length());
}

不声明类型,如果集合中存放的是多个对象,这时进行向下转型会发生类型转换异常。

Iterator接口也可以使用<>来控制迭代元素的类型的。

Collection<String> coll = new ArrayList<String>();
coll.add("abc");
coll.add("aabbcc");
coll.add("cat");
Iterator<String> it = coll.iterator();
while (it.hasNext()) {
    String str = it.next();
//当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
    System.out.println(str.length());
}
 
Collection<Integer> arr=new ArrayList<Integer>();
        arr.add(123);
        arr.add(234);
        arr.add(456);
        Iterator<Integer> it=arr.iterator();
        while(it.hasNext()){
            if(it.next()==234){
                arr.add(666);//不能直接添加元素
            }
        }

 

posted @ 2020-07-13 16:36  wangmeihao  阅读(183)  评论(0编辑  收藏  举报