Collection集合

是一个接口不能创建Collection的实例集合,但能创建其子类的集合。

但在等号的左侧是Collection 即在进行创建实例对象的时候是多态形式

拥有工具类Collections

Collection集合_第1张图片

有序性:集合再进行插入元素的时候,按照插入的先后顺序进行排列

无序性:集合再进行插入元素的时候,随机在集合中排列,且当集合运行一次后,即使是退出应用,该集合数据的排序也是确定的。

Set旗下的实现类有的是无序的有的是有序的

对于有序/无序,不同的资料对其理解不同

Collection类型集合的常用方法:

1.将一个集合的全部数据倒入到另一个集合中去,但需要将两个集合的数据类型是相同的

c1.addAll(c2);将c2集合的全部数据倒入c1集合中去

2. boolean add(E ,e) 向集合添加元素e,若成功返回true

3.boolean addAll(Collection c) 把集合C中的元素全部添加到集合中,若指定集合元素改变返回true;

4.void clear() 清空所有集合元素

5.boolean contains(Object o) 判断指定集合是否包含对象o

6.boolean containsAll(Collection c) 判断指定集合是否包含集合c的所有元素

7.boolean isEmpty() 判断指定集合的元素size是否为0

8boolean remove(Object o) 删除集合中的元素对象o,若集合有多个o元素,则只会删除第一个元素

9.boolean removeAll(Collection c) 删除指定集合包含集合c的元素

10.boolean retainAll(Collection c) 从指定集合中保留包含集合c的元素,其他元素则删除

11.int size() 集合的元素个数

12.T[] toArray(T[] a ) 将集合转换为T类型的数组

----

Collection 的遍历方式:

(不适用普通的for循环,该循环需要使用有索引的数据才能进行)

迭代器:

需要先从集合对象中进行获取迭代器的对

Iterator<集合对象的数据类型> 迭代器的对象名=集合对象名.iterator();

直接使用迭代器对象的功能即可进行对数组的遍历如 .next();每次一个都是进行获取一个元素,包括直接System

且当进行连续去取时不能够超过元素的个数。

迭代器是一次性的:即每次进行该迭代器的使用时他都会进行一个hastnext()。判断当前元素是否存在,如果存在放在该次的next中,进行下一个判断但不存在在时就会报错。

所以在循环中进行时只用一个next否则会分次取到元素

即一个hasnext一定要只对应一个next

此时这时不方便,下面进行使用循环结合迭代器进行使用,进行避免迭代器元素数超过报错的问题

-----

当集合是储存任意类型的元素的时候,就可以通过使用强转,使呈现出来的数据为指定的类型

Collection coll = new ArrayList();

coll.add("abc");

coll.add("def");

coll.add("opq");

//获取迭代器

Iterator it = coll.iterator();

while (it.hasNext()) {

// it.next()获取出来的对象数据类型为Object

//Object obj = it.next();

//当需要使用子类对象特有方法时,需要向下转型

String str = (String) it.next();

System.out.println(str.length());

}

String str =(String) it.next(); System.out.println(str.length());}

//注意:如果集合中存放的是多种对象,这时进行向下转型会发生类型转换异常。

增强for(即foreach/快捷建为:对象.for; 实质上是迭代器的简化版本):

可以通过数组/集合名.for快速搭建框架

格式:for(元素的数据类型 变量名(是foreach的标识符): 数组名/集合名 ){

Sy.............

也可以进行其他处理

}

lambda表达式:

用for Each(本质是for each,只是进行修改)方法结合lambda

以上都等价:实际上print 和pringln都是一个方法

Collection类型集合遍历的案例:

package jihe2;

import java.util.ArrayList;
import java.util.Collection;
//对Collection类型的集合进行元素的遍历
public class test {
    public static void main(String[] args) {
        Collection movies=new ArrayList<>();
        movies.add(new movie("傻逼一号",11,"傻逼1"));
        movies.add(new movie("傻逼二号",22,"傻逼2"));
        movies.add(new movie("傻逼三号",33,"傻逼3"));
        //类型一:进行在类中对toString方法进行重写
        System.out.println(movies);
        //类型二:使用foreach  迭代器 Lambda表达式进行遍历
        for (movie movie : movies) {
            System.out.println(movie.getName()+movie.getScore()+movie.getActor());
        }
    }

}
package jihe2;

public class movie {
    @Override
    public String toString() {
        return "movie{" +
        "name='" + name + '\'' +
        ", score=" + score +
        ", actor='" + actor + '\'' +
        '}';
    }
    private String name;
    private double score;

    public movie(String name, double score, String actor){
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public String getName () {
        return name;
    }

    public void setName (String name){
        this.name = name;
    }

    public double getScore () {
        return score;
    }

    public void setScore ( double score){
        this.score = score;
    }

    public String getActor () {
        return actor;
    }

    public void setActor (String actor){
        this.actor = actor;
    }

    private String actor;

    public movie() {
    }
}

集合在进行储存对象的时候是储存的地址

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

Collecction下的常用工具类:

Collection集合_第2张图片

Collection系列集合在使用addAll方法后原集合的数据仍存在

shuffle用的较多(用于List集合打乱顺序)

你可能感兴趣的:(java,算法,javascript)