【Java集合】Collection接口常用方法
创始人
2024-02-21 19:15:04
0

文章目录

  • Collection接口和常用方法
    • > Collection接口常用方法
    • > Collection接口遍历元素:使用Iterator(迭代器)
    • > Collection接口遍历元素:增强 for 循环

Collection接口和常用方法

Collection接口实现类的特点:

public interface Collection extends Iterable
  1. Collection实现子类可以存放多个元素,每个元素可以是Object
  2. 有些Collection的实现类,可以存放重复的元素,有些不可以;
  3. 有些Collection的实现类,有些是有序的(List),有些则不是有序(Set);
  4. Collection接口没有直接的实现子类,是通过它的子接口List和Set来实现的;

> Collection接口常用方法

  • add : 添加单个元素;
  • remove : 删除指定元素;
  • contains : 查找元素是否存在;
  • size : 获取元素个数;
  • isEmpty : 判断是否为空;
  • clear : 清空;
  • addAll : 添加多个元素;
  • containaAll :查找多个元素是否都存在;
  • removeAll : 删除多个元素;

以 ArrayList 实现类来演示:

import java.util.ArrayList;
import java.util.List;public class CollectionMethod {public static void main(String[] args) {//1.add:添加单个元素List list = new ArrayList();list.add("字符串");list.add(128);//list.add(new Integer(10))list.add(true);System.out.println("list="+list);//list=[字符串, 128, true]//2.remove:删除指定元素//list.remove(0);//删除第一个元素//System.out.println("list="+list);//list=[128, true]list.remove("字符串");//指定删除某个元素System.out.println("list="+list);//list=[128, true]//3.contains:查找某个元素是否存在System.out.println(list.contains(128));//true//4.size:返回元素个数System.out.println(list.size());//2//5.isEmpty:判断是否为空System.out.println(list.isEmpty());//false//6.clear:清空list.clear();System.out.println("list= "+list);//list= []//7.addAll:添加多个元素ArrayList list2 = new ArrayList();list2.add("开心");list2.add("每");list2.add(1);list2.add("天");list.addAll(list2);//传入一个集合System.out.println("新的list:"+list);//新的list:[开心, 每, 1, 天]//8.containsAll:查找多个元素是否存在System.out.println(list.containsAll(list2));//true//9.removeAll:删除多个元素list.removeAll(list2);System.out.println("list="+list);//list=[]}
}

> Collection接口遍历元素:使用Iterator(迭代器)

  1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素;
  2. 所有实现了Collection接口的集合类都有一个 iterator( ) 方法,用以返回一个实现了Iterator接口的对象,即返回一个迭代器;
  3. Iterator仅用于遍历集合,Iterator本身并不存放对象;
迭代器执行原理:
Iterator iterator = new coll.iterator(); 得到一个集合迭代器
hasNext() :判断是否还有下一个元素
while(iterator.hasNext()){next()作用:指针下移,将下移后以后集合位置上的元素返回System.out.println(iterator.next());
}

每 next() 一次,箭头下移一次:
在这里插入图片描述

注意:在调用 iterator.next( ) 方法之前,必须要调用iterator.hasNext( ) 进行检测;若不调用,且下一条记录无效,直接调用 iterator.next( ) 会抛出 NoSuchElementException异常。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class CollectionIterator {public static void main(String[] args) {Collection col = new ArrayList();col.add(new Book("三国演义","罗贯中",10.1));col.add(new Book("红楼梦","曹雪芹",34.6));col.add(new Book("西游记","吴承恩",28.8));System.out.println("col : "+col);
//col : [Book{name='三国演义', author='罗贯中', price=10.1}, Book{name='红楼梦', author='曹雪芹', price=34.6}, Book{name='西游记', author='吴承恩', price=28.8}]//遍历 col//1.先得到col集合对应的迭代器Iterator iterator = col.iterator();//2.使用while循环遍历//快捷键快速生成while循环 输入itit回车即可//crtl+j 可以查看当前所有快捷键while(iterator.hasNext()){ //判断是否还有数据//next()返回下一个元素,类型是ObjectObject obj = iterator.next();System.out.println(obj);//Book{name='三国演义', author='罗贯中', price=10.1}//Book{name='红楼梦', author='曹雪芹', price=34.6}//Book{name='西游记', author='吴承恩', price=28.8}//3.当退出while循环后,此时iterator迭代器指向最后的元素//iterator.next(); --> NoSuchElementException//4.若还要使用迭代器,需要重置迭代器iterator = col.iterator();             }}
}class Book{private String name;private String author;private double price;public Book(String name, String author, double price) {this.name = name;this.author = author;this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +'}';}
}

> Collection接口遍历元素:增强 for 循环

增强for循环,可以代替 iterator迭代器,特点:增强for循环就是简化版的iterator,本质一样,只能用于遍历集合或数组;

基本语法:

for(元素类型 元素名 : 集合名或数组名){访问元素
}
import java.util.ArrayList;
import java.util.Collection;public class CollectionIterator {public static void main(String[] args) {Collection col = new ArrayList();col.add(new Book("三国演义","罗贯中",10.1));col.add(new Book("红楼梦","曹雪芹",34.6));col.add(new Book("西游记","吴承恩",28.8));//增强for循环  不仅可以用于集合,数组也同样适用//底层仍然是迭代器iterator 相当于简化版迭代器//快捷键 输入I后回车for (Object book:col) {System.out.println(book);}//Book{name='三国演义', author='罗贯中', price=10.1}//Book{name='红楼梦', author='曹雪芹', price=34.6}//Book{name='西游记', author='吴承恩', price=28.8}}
}class Book{private String name;private String author;private double price;public Book(String name, String author, double price) {this.name = name;this.author = author;this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +'}';}
}

相关内容

热门资讯

原创 日... 时隔30多天,中日韩首次达成共识,中方降级参会,提前送了日本7个字。日学者通告全球:高市一定撑不过明...
画面曝光:乌克兰征兵官员被汽车... ▲新京报我们视频出品(ID:wevideo) 12月15日,乌克兰尼古拉耶夫居民将征兵官员引诱出家门...
“每天回家我都想吐!”整整3年... 客厅上方是厕所 厨房上方是厕所 卧室上方还是厕所 每天晚上在房中睡觉 总能听到楼上传来此起彼伏的冲水...
原创 辩... 在全球政治舞台上,台湾问题一直是一个敏感而复杂的议题,而日本在这个问题上的态度变化更是引人关注。近来...
镇江一女子冲进派出所:“我的手... 近日 年过花甲的刘女士 轻信“平台客服”诱导 泄露银行卡验证码并遭远程操控 存款被连续转出 关键时刻...
特朗普将发表全国讲话:应对民调... 特朗普在社交媒体上表示,他将于美东时间周三晚上9点(北京时间周四上午10点)向全国发表黄金时段讲话。...
白宫新闻秘书Leavitt:美... 白宫新闻秘书Leavitt:美国总统特朗普可能会在周三披露2026年政策方向。
白宫新闻秘书Leavitt:美... 白宫新闻秘书Leavitt:美国总统特朗普可能会在周三披露2026年政策方向。
免签东风起 共赢新篇开——俄罗... 当一纸免签政策落地,中俄两国之间的往来壁垒悄然消弭。俄罗斯对中国居民免签这一举措,不仅为普通人打开了...
数字认证(300579)披露新... 截至2025年12月16日收盘,数字认证(300579)报收于28.45元,较前一交易日上涨0.71...