简单阐述一下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
猜你喜欢
- 本文主要和大家分享介绍了关于Java JDK * 使用的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:前言代理是一种常用的
- HashMap和HashTable,这二者的区别经常被别人问起,今天在此总结一下。(一)继承的历史不同public class
- 1. pom.xml文件配置<?xml version="1.0" encoding="UTF-8&qu
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- 本文实例讲述了C++语言实现线性表之链表实现方法。分享给大家供大家参考。具体分析如下:插入、删除结点的代码有点多,但这样提高了代码的可读性,
- 参考:How to catch an Exception from a threadIs there a way to make Runna
- 在IntelliJ IDEA 中这个查看一个类也就是当前类的所有继承关系,包括实现的所有的接口和继承的类,这个继承,不仅仅是一级的继承关系,
- 前言本文将带您了解在 Flutter 中制作翻转卡片动画的两个完整示例。第一个示例从头开始实现,第二个示例使用第三方包。闲话少说,让我们动手
- 在android开发中,经常会遇到一个view需要它能够支持滑动的需求。下面通过本篇文章给大家介绍android view移动的六种方法。l
- 本文实例讲述了java实现的简单猜数字游戏代码。分享给大家供大家参考。具体代码如下:import java.util.InputMismat
- 示例 1 :使用搜索表单创建全屏模式我们要构建的小应用程序有一个应用程序栏,右侧有一个搜索按钮。按下此按钮时,将出现一个全屏模式对话框。它不
- 最近在开发的过程中,一个列表的查询,涉及到了多表的关联查询,由于持久层使用的是mongodb,对这个非关系型数据使用的不是很多,所以在实现此
- @RequestMapping注解注意点类上加没加@RequestMappin注解区别1.如果类上加了 @RequestMappin注解,那
- Android 自动获取验证码的两种方式分别是BroadcastReceiver及ContentObserver,两种方式都需要进行注册、取
- Android异常详情介绍这种异常我遇到以下两种情况: 1. java.lang.IllegalStateException: No wra
- 本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下代码模块:User类:package test1;publi
- 由于 Spring 拥有对象的管理权,所以我们也需要拥有较为高效的对象存储和取出的手段,下面我们来分别总结一下:存对象配置文件在存储对象之前
- 如下所示:String beginDate="1328007600000";SimpleDateFormat sdf=n
- 在谈 Volatile 之前,我们先回顾下 Java 内存模型 的三要素:原子性、可见性、有序性,也就是大家常提到的并发编程三要素。并发编程
- 前言在原生的 Android 或 iOS 中,都提供了基本的键值对存储方式,Android 是 SharedPreferences,iOS