首页 > 其他分享 >集合(1)

集合(1)

时间:2023-07-28 11:34:50浏览次数:23  
标签:arraylist 元素 list 接口 ---- add 集合

前言

为什么使用集合?

1)可以动态保存任意多个对象,使用较为方便

2)提供了一系列方便的操作对象的方法

3)使用集合添加、删除新元素的代码简洁明了

Collection接口

集合框架体系

集合(1)_List接口

集合(1)_List接口_02

1)集合主要是两组(单列集合、双列集合)

2)Collection接口有两个重要子接口List和Set,实现子类都是单列集合

3)Map接口的实现子类是双列集合,存在键值对K-V

Collection接口实现类的特点

1)collection实现子类可以存放多个元素,每个元素可以是Object

2)Collection接口没有直接的实现子类,通过它的子接口Set和List实现的

Collection接口的常用方法

1)add ---- 添加单个元素

2)remove ---- 删除指定元素

3)contains ---- 查找元素是否存在

4)size ---- 获取元素个数

5)isEmpty ---- 判断是否为空

6)clear ---- 清空

7)addAll ---- 添加多个元素

8)containsAll ---- 查找多个元素是否都存在

9)removeAll ---- 删除多个元素

Collection接口遍历元素的两种方式

方式一:使用Iterator(迭代器)

Iterator对象称为迭代器,用于遍历collection集合中的元素

所有实现了Collection接口的集合类都有一个Iterator()方法

用以返回一个实现了Iterator接口的对象,即返回一个迭代器

注意:Iterator本身并不存放对象

			// 以 ArrayList为例
				Collection arraylist = new ArrayList();

			//加入元素
        arraylist.add(1);
        arraylist.add(2);
        arraylist.add(3);
        arraylist.add(4);

			//得到arraylist集合的迭代器
        Iterator it = arraylist.iterator();

			// it.hasNext()  判断是否存在下一个元素
      // 		若存在返回true,否则返回false
        while (it.hasNext()) {
          //it.next() 指向下一个元素,并返回该元素
            Object next =  it.next();
            System.out.println(next);
        }

//注意:在调用next()方法前必须要调用hasNext()方法进行检测
//	若不调用,下一个元素不存在,直接调用next()方法
//	会抛出NoSuchElementException异常

方式二:使用增强for循环

			// 以 ArrayList为例
				Collection arraylist = new ArrayList();

			//加入元素
        arraylist.add(1);
        arraylist.add(2);
        arraylist.add(3);
        arraylist.add(4);
			//增强for
				for (Object obj:arraylist ){
         System.out.println(obj);
        }

List接口

List接口是Collection接口的子接口

1)List集合类中元素有序,添加顺序与取出顺序一致、元素可重复

2)list集合中的每个元素都有其对应的顺序索引

List接口的常用方法

1)void add(int index,Object ele)

在index位置插入ele元素

2)boolean addAll(int index, Collection eles)

从index位置开始将eles中的所有元素添加进来

3)Object get(int index)

            获取指定index位置的元素

4)int indexOf(Object obj)

            返回obj在集合中首次出现的位置

5)int lastIndexOf(object obj)

返回obj在当前集合中末次出现的位置

6)Object remove(int index)

            移除指定index位置的元素,并返回此元素

7)Object set(int index,Object ele)

设置指定index位置的元素为ele相当于是替换

List接口的三种遍历方式

方式一:使用Iterator(迭代器)

			// 以 ArrayList为例
        List list = new ArrayList();

      //加入元素
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

       //Iterator
        Iterator it = list.iterator();
        while(it.hasNext()){
            Object next =  it.next();
            System.out.println(next);
        }

方式二:使用增强for循环

			// 以 ArrayList为例
				List list = new ArrayList();

			//加入元素
        arraylist.add(1);
        arraylist.add(2);
        arraylist.add(3);
        arraylist.add(4);

			//增强for
				for (Object obj:arraylist ){
         System.out.println(obj);
        }

方式三:使用普通for循环

			// 以 ArrayList为例
        List list = new ArrayList();

      //加入元素
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

      //for
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

Set接口

Set接口是Collection接口的子接口

1)无序(添加和取出顺序不一致),没有索引

2)不允许重复元素

Set接口的常用方法

1)add ---- 添加单个元素

2)remove ---- 删除指定元素

3)contains ---- 查找元素是否存在

4)size ---- 获取元素个数

5)isEmpty ---- 判断是否为空

6)clear ---- 清空

7)addAll ---- 添加多个元素

8)containsAll ---- 查找多个元素是否都存在

9)removeAll ---- 删除多个元素

      10)toArray ---- 变为数组

11)hashCode ---- 哈希值

List接口的两种遍历方式

方式一:使用Iterator(迭代器)

      //以HashSet为例
        Set hset = new HashSet();

      //加入元素
        hset.add(1);
        hset.add(2);
        hset.add(3);
        hset.add(4);

      //Iterator
        Iterator it = hset.iterator();
        while(it.hasNext()){
            Object next =  it.next();
            System.out.println(next);
        }

方式二:使用增强for循环

  		//以HashSet为例
        Set hset = new HashSet();

      //加入元素
        hset.add(1);
        hset.add(2);
        hset.add(3);
        hset.add(4);

      //增强for
				for (Object obj:hset ){
         System.out.println(obj);
        }

// 注意:不能使用索引的方式来获取 ---- 没有普通for循环来获取值








标签:arraylist,元素,list,接口,----,add,集合
From: https://blog.51cto.com/u_16188762/6879799

相关文章

  • YAML+PyYAML笔记 3 | YAML集合、结构、标量、标记使用
    (3|YAML集合、结构、标量、标记使用)1集合YAML支持三种集合类型:列表,映射和集。1.1列表列表是一种序列结构,它使用连字符“-”表示;如下三个元素的列表,元素之间用“-”:fruit:-apple-rubber-pear使用Pyyaml解析:#解析withopen("config_jihe.yaml")asf:......
  • java 调用方法返回集合
    Java调用方法返回集合的实现步骤对于刚入行的小白来说,Java调用方法返回集合可能会有一些困惑。在本文中,我将向你介绍如何实现Java调用方法返回集合的步骤,并提供相应的代码示例。让我们开始吧!步骤概览下面是实现Java调用方法返回集合的步骤概览。我们将在后续的部分中详细解释每......
  • List集合去重
    需求场景:接口返回的数据是一个List集合需要将这个集合中的数据进行一个过滤,保证没有重复数据.优点:使用迭代器进行去除多余数据不会,简单高效,不会发生过滤不全,数组越界等问题.实例代码:publicvoidlistTest(){List<String>list=newArrayList<>(Arrays.as......
  • 面试-集合
    hashMap扩容大于当前容量0.75,扩容成2倍。创建一个新空数组,重新hash初始容量16链表大于8转换为红黑树,小于6退化为链表indexindex=HashCode(Key)&(Length-1)index的结果等同于HashCode后⼏位的值。只要输⼊的HashCode本身分布均匀,Hash算法的结果就是均匀的hashTable在很......
  • Redis的有序集合Zset为啥用跳表不用二叉树
    跳表和红黑树查找的时间复杂度都是logN,插入删除也是logN。范围查找貌似也都是O(k+logn),其中n是树中节点的数量,k是满足范围条件的节点数量。但是实现起来跳表要简单很多。1.zset有个很核心的操作叫范围查找,我们要查找某个范围区间的元素。跳表可以做到logN时间复杂度内的快......
  • 集合框架
    集合框架集合的概念概念:对象的容器,实现对对象常用的操作,类似数组功能和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型Collection接口Collection父接口特点:代表一组任意类型的对象,无序.无下标.不能重复方法:boole......
  • redis 取出指定集合
    Redis取出指定集合Redis是一种高性能的键值存储数据库,它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。在Redis中,集合是一种无序且唯一的数据结构,它可以存储多个元素。本文将介绍如何在Redis中取出指定集合的元素,并提供相关代码示例。Redis集合Redis集合是一个无序......
  • 多线程并发修改集合案例
    //单线程使用修改集合ArrayListarrayList=newArrayList();for(inti=0;i<100;i++){arrayList.add(i);}intbatch=10;intsize=arrayList.size();if(0<size&&size&l......
  • 用Java集合中的Collections.sort方法对list排序的两种方法
    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下:   <strong>/**02 *根据order对User排序03 */04 publicclassUserimplementsComparable{05 privateStringname;06 privateIntegerorder;07 publicStringgetN......
  • Swift中文教程(四) 集合类型
    Swift提供两种集合类型来存储集合,数组和字典。数组是一个同类型的序列化列表集合。字典是一个能够使用类似于键的唯一标识符来获取值的非序列化集合。 在Swift中,数组和字典的键和值都必须明确它的类型。这意味这数组和字典不会插入一个错误的类型的值,以致于出错。这也意味着当你......