集合

时间:2021-6-4 作者:qvyue

List、Set、Map

  • 在实际开发中,需要将使用的对象存储与特定的数据结构的容器中。JDK提供了这样的容器–集合(Collection)。
  • Collection 是一个接口,定义了集合相关的操作方法。其有两个子接口:List、Set
  • List:可以重复集,元素是否重复,取决于元素的equals方法比较结果
  • Set:不可重复集的
package chapter05;

import java.util.ArrayList;
import java.util.Collection;

import chapter02.Point;


/**
 * java.util.Collection
 * 集合,用于存储一组元素。提供了维护集合的相关方法
 * 
 * 其派生了两个子接口:
 * List:可重复集
 * Set:不可重复集
 * 元素是否重复是依靠元素自身equals方法比较的结果而定的
 * @author tedu
 *
 */
public class CollectionDemo01 {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        /*
         * boolean add(E e);
         * 向集合中添加元素
         * 当元素添加成功后,返回true
         */
        c.add("one");
        c.add(1);
        c.add(new Point(1,2));
        System.out.println(c);
        
        /*
         * int size();
         * 返回当前集合的元素个数
         */
        System.out.println("size:"+c.size());
        
        /*
         * boolean isEmpty();
         * 判断当前集合是否含有任何元素。
         * 空集合 
         */
        boolean isEmpty = c.isEmpty();
        System.out.println("是否为空集:"+isEmpty);
    
        /*
         * void clear()
         * 清空集合元素
         */
        c.clear();
        
        System.out.println("是否为空集:"+c.isEmpty());
        System.out.println(c.size());
    }

}

判断集合是否包含给定元素

package chapter05;

import java.util.ArrayList;
import java.util.Collection;

import chapter02.Point;

/**
 * boolean contains(E e)
 * 判断当前集合是否包含给定元素
 * @author tedu
 *
 */
public class CollectionDemo02 {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        System.out.println(c);
        
        Point p = new Point(1,2);
        /*
         * 集合判断是否包含指定的元素是依靠元素的equals方法
         * 比较的结果。只要集合中有元素与给定元素比较为true,
         * 则认为包含
         */
        boolean contains = c.contains(p);
        System.out.println("是否包含:"+contains);
    }

}

删除集合元素

boolean remove(E e)
从集合中删除指定元素,删除成功返回true
删除集合中第一个与给定元素equals比较为true的元素

package chapter05;

import java.util.ArrayList;
import java.util.Collection;

import chapter02.Point;
public class CollectionDemo04 {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(1,2));
        
        System.out.println(c);
        
        Point p = new Point(1,2);
    
        c.remove(p);
        System.out.println("删除完毕");
        System.out.println(c);
        
    }
}

批量操作集合

1.将给定集合中的所有元素添加到当前集合中、

2.判断当前集合是否包含给定集合中的所有元素

3.从当前集合中删除掉与指定集合中共有的元素

package chapter05;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 集合的批量操作
 * @author tedu
 *
 */
public class CollectionDemo05 {

    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("c++");
        c1.add("php");
        c1.add(".net");
        System.out.println(c1);
        
        Collection c2 = new ArrayList();
        c2.add("ios");
        c2.add("C#");
        c2.add("Python");
        c2.add("Web");
        System.out.println(c2);
        
        /*
         * 取并集
         * boolean addAll(Collection c)
         * 将给定集合中的所有元素添加到当前集合中、
         * 添加后只要当前集合元素数量发生了边界,则返回true
         */
        boolean flag = c1.addAll(c2);
        System.out.println(c1);
        System.out.println(flag);
        
        
        Collection c3 = new ArrayList();
        c3.add("java");
        c3.add("c++");
        System.out.println(c3);
        /*
         * boolean containsAll(Collection c)
         * 判断当前集合是否包含给定集合中的所有元素
         */
        flag = c1.containsAll(c3);
        System.out.println("全包含:"+flag);
        
        /*
         * boolean removeAll
         * 从当前集合中删除掉与指定集合中共有的元素
         */
        c1.removeAll(c3);
        System.out.println(c1);
        System.out.println(c3);
        
    }

}

集合的迭代器

Collection提供统一的遍历集合元素的方式:迭代器模式

Iterator iterator()

获取用于遍历当前集合的迭代器

java.uti.Iterator 是一个接口,规定用于遍历集合的相关方法
不同的集合提供了相应的实现类。无需记住哪些实现类的名字,
只将他们当做Iterator使用即可

遍历集合遵循:问,取,删的步骤。其中删除不是必须操作。

package chapter05;

public class CollectionDemo06 {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("four");
        c.add("five");
        System.out.println(c);
        //获取当前集合的迭代器
        //[one, two, three, four, five]
        
        
        
        /*
         * boolean hasNext() 问的过程
         * 该方法是判断集合是否还有元素可以取出
         * 
         * E next() 取的过程
         * 获取集合的下一个元素
         */
        Iterator it = c.iterator();
        while(it.hasNext()) {//问:是否存在元素
            String str = (String) it.next();//取:获取该位置的元素
            if("#".equals(str)) {
                /*
                 * 在使用迭代器遍历 集合时,不要使用
                 * 集合的方式来增删元素,否则会引发异常
                 */
                //c.remove("#");
                it.remove();
            }
            System.out.println(str);
        }
        System.out.println(c);
    }

}

增强型for循环

JDK 5.0 之后推出一个新特性,增强for循环,也称为新循环
该循环不通用于传统的循环工作,其只用于遍历集合或数组

语法:、

 for(元素类型 e : 集合或数组名){
    循环体;
 }

新循环并非新的语法,而是编译过程中,编译器会将新循环转换为迭代器,所以新循环本质上就是迭代器。

package chapter05;

public class Collection_for {

    public static void main(String[] args) {
        String[] array = {"one","two","three","four"};
        for (int i = 0; i 
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。