简单阐述一下Java集合的概要
作者:凌北辰 发布时间:2023-08-23 19:49:45
概念
Java中的集合就是一种容器,可以容纳不同种类的数据,这些容纳是建立在未知的基础上。
优点
1.可以动态保存任意多个对象,使用比较方便。
2.提供一系列方便的操作对象的方法:add、remove、set、get等
3.使用集合添加,删除新元素的示意代码简洁。
集合框架图
Collection接口和常用方法
1.Collection实现子类可以存放多个元素,每个元素可以是Object
2.有些Collection的实现类,可以存放重复的元素,有些不可以
3.有些Collection的实现类,有些是有序的(list),有些不是有序的(set)
4.Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的。
Collection接口常用方法
1.add 添加单个元素 2.remove 删除指定元素 3.contains 查找元素是否存在
4.size 获取元素个数 5.isEmpty 判断是否为空 6.clear 清空 7.addAll 添加多个元素
8.containsAll 查找多个元素是否都存在 9.removeAll 删除多个元素
Collection迭代器遍历元素
1.Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
2.所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了
iterator接口的对象,即可以返回一个迭代器
3.Iterator仅用于遍历集合,它本身并不存放对象
for循环增强
增强for循环,可以代替iterator迭代器
特点:增强for就是简化版的iterator,本质一样,只能用于遍历集合或数组
基本语法
for(元素类型 元素名:集合名或数组名){
访问元素
}
/**案例演示*/
public class Card {
public static void main(String[] args) {
/**
* 1.准备牌
* 2.洗牌
* 3.发牌
* 4.看牌*/
//1.
//创建一个牌盒
ArrayList<String> BoxCard = new ArrayList<String>();
//创建花色集合
ArrayList<String> color = new ArrayList<String>();
//创建数字集合
ArrayList<String> numbers = new ArrayList<String>();
//添加花色牌
color.add("♠");
color.add("♥");
color.add("♦");
color.add("♣");
//创建数字牌
for (int i = 2; i <=10 ; i++) {
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("k");
numbers.add("A");
//把花色牌和数字牌添加到一个大牌盒
for (String o:color) {
for (String n : numbers) {
String card = o + n;
BoxCard.add(card);
}
}
BoxCard.add("BigKing");
BoxCard.add("SmallKing");
//2.
Collections.shuffle(BoxCard);
System.out.println(BoxCard);
//3.发牌
//创建三个用户
ArrayList<String> player1 = new ArrayList<String>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
//递牌
ArrayList<String> GiveCards = new ArrayList<>();
for (int m = 0; m <BoxCard.size(); m++) {
//获取牌面
String cards = BoxCard.get(m);
//发牌顺序余三张
if (m>=51){
GiveCards.add(cards);
}else {
if (m % 3 ==0){
player1.add(cards);//获取第一个玩家牌数
}else if (m % 3 ==1){
player2.add(cards);//获取第二个玩家牌数
}else {
player3.add(cards);//获取第三个玩家牌数
}
}
}
//看牌
System.out.println("第一个玩家"+player1);
System.out.println("第二个玩家"+player2);
System.out.println("第三个玩家"+player3);
System.out.println("底牌"+GiveCards);
}
}
list接口和常用方法
1.list集合类中元素有序(及添加顺序和取出顺序一致)、可重复
2.list集合类中的每个元素都有其对应的顺序索引,及支持索引
3.list容器中的元素对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
4.JDK API中list接口常用实现的类:ArrayList、LinkedList和Vector。
常用方法
add 添加单个元素 remove 删除指定元素
public E get(int index)返回集合中指定位置
public E set(int index ,E element)用指定元素替换集合中指定位置的元素,返回值的更新前的元素
public class olg {
public static void main(String[] args) {
//创建集合对象
List<String> list = new ArrayList<String>();
//尾部添加指定数据
list.add("光之子");
list.add("神印王座");
list.add("酒神");
list.add("诸神黄昏");
System.out.println(list);
//指定位置添加
list.add(1,"全职高手");
System.out.println(list);
//删除指定元素
System.out.println(list.remove(3));
list.set(1,"斗罗大陆");
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//增强for
for (String s:list){
System.out.println(s);
}
}
}
ArrayList
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能 为查询数据、遍历数据,所以 ArrayList 是最常用的集合。
LinkedList集合
java.util.LinkedList 集合数据存储的结构是链表结构。方便元素添加、删除的集合
常用方法
public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
public class Linked {
public static void main(String[] args) {
LinkedList<String> link = new LinkedList<String>();
//添加第一个元素值
link.addFirst("龙皓晨");
link.addFirst("姬动");
link.addFirst("叶音竹");
link.addFirst("长弓威");
System.out.println(link);
//获取元素
System.out.println(link.getFirst());//第一个值
System.out.println(link.getLast());//最后一个值
//删除元素
System.out.println(link.removeFirst());
System.out.println(link.removeLast());
while (!link.isEmpty()){//判断集合是否为空
System.out.println(link.pop());//弹出集合中的栈顶元素
}
System.out.println(link);
}
}
Map集合(键值对集合)
现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等, 这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即 java.util.Map 接口。
HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重 复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。 通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。
常用方法
public V put(K key, V value)`: 把指定的键与指定的值添加到Map集合中。
public V remove(Object key)`: 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的 值。`
public V get(Object key)` 根据指定的键,在Map集合中获取对应的值。 `
boolean containsKey(Object key) ` 判断集合中是否包含指定的键。
public Set keySet()`: 获取Map集合中所有的键,存储到Set集合中。
public Set> entrySet()`: 获取到Map集合中所有的键值对对象的集合(Set集合)。
public class HashMapdemo {
public static void main(String[] args) {
//创建Map对象
HashMap<String,String> map = new HashMap<String,String>();
//添加元素到集合
map.put("李世民","长孙皇后");
map.put("1","朱元璋");
System.out.println(map);
//删除
System.out.println(map.remove("1"));
System.out.println(map);
//查看李世民的皇后
System.out.println(map.get("李世民"));
}
}
//添加元素到集合
map.put("李世民","长孙皇后");
map.put("1","朱元璋");
System.out.println(map);
//删除
System.out.println(map.remove("1"));
System.out.println(map);
//查看李世民的皇后
System.out.println(map.get("李世民"));
}
}
来源:https://blog.csdn.net/liustreh/article/details/117898421


猜你喜欢
- Android9.0无法通过以下两种方式实现静默安装:1.runtime执行shell cmd2.PackageInstall 反射机制但是
- 一、脚本生命周期Unity脚本中的常见必然事件如下表所示名称触发时机用途Awake脚本实例被创建时调用用于游戏对象的初始化,注意Awake的
- 本文实例为大家分享了java实现超市管理系统的具体代码,供大家参考,具体内容如下实现功能使用选择结构,循环结构,数组的知识实现一个超市管理系
- 这篇文章主要介绍了Spring Cloud Sleuth整合zipkin过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 前面写过一篇关于下拉刷新控件的文章下拉刷新控件终结者:PullToRefresh
- 前言上一篇文章用贝塞尔曲线画了一个看起来不错的小红点功能,技术上没什么难度,主要就是数学上的计算。这篇文章也差不多,模仿了一个常用的滑动解锁
- 一般来说C#在不安装Excel软件的情况下,可以通过XML来创建Excel文档。因此,运行本文所述代码您无需安装Excel程序。本文原例子是
- Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 1.方法声明时使
- 前言今天遇到一个需求,需要对word模板进行替换制定的变量在网上找了很多方案,做了很多的demo,下面就把我觉得比较简单的一种分享给大家本次
- 这篇文章主要介绍了java split()使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 介绍细心的小伙伴可能会发现,抖音新上线了IP属地的功能,小伙伴在发表动态、发表评论以及聊天的时候,都会显示自己的IP属地信息下面,我就来讲讲
- 问题描述在使用 Matisse 与 glide 4.0.0 以及 4.0.0 之后的版本过程中,发现通过Matisse 的 wiki 代码调
- 项目中最近用到各种图表,本来打算用第三方的,例如MPAndroid,这是一个十分强大的图表库,应用起来十分方便,但是最终发现和设计不太一样,
- 本文实例讲述了Java实现的求解经典罗马数字和阿拉伯数字相互转换问题。分享给大家供大家参考,具体如下:古罗马帝国开创了辉煌的人类文明,但他们
- (注意:本文基于JDK1.8)前言增删改查,修改元素,Vector提供了3个方法,包括迭代器中的一个,不过本文只分析Vector自身的两个修
- 目录Emit异常处理流程 显示Exception对象的Message属性 返回目录 Emit异常处理流程来看这种C#异常处理代码: 
- 简介optional类是java8中引入的针对NPE问题的一种优美处理方式,源码作者也希望以此替代null。历史1965年,英国一位名为To
- 引言在学习Java过程中,排序sort是我们常用的功能;在Java里,数组有Arrays.sort()可以排序,集合则是Collection
- 参考 java查找无向连通图中两点间所有路径的算法,对代码进行了部分修改,并编写了测试用例。算法要求:1. 在一个无向连通图中求出
- 1、存储在App内部最简单的一种。在尝试过程中发现,手机中很多文件夹都没有权限读写。我们可以将我们需要写的文件存放到App中的files文件