集合

作者: GuoDJ | 来源:发表于2021-05-18 19:22 被阅读0次

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<String> c = new ArrayList<String>();
        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 < array.length; i++) {
            String str = array[i];
            System.out.println(str);
        }
        
        for(String str : array) {
            System.out.println(str+1);
        }
    }
}

相关文章

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

网友评论

      本文标题:集合

      本文链接:https://www.haomeiwen.com/subject/fgyyjltx.html