Java 集合


一、集合的框架体系(重要,背!!!)

1.Collection(单列集合,只存放value)

2.Map(双列集合,存放key-value)



二、Collection接口

1.特点

使用了Collection接口的子类

  • 可以存放多个元素,每个元素可以是Object
  • 有些子类可以存放重复元素,有些子类不可以
  • List的存放是有序的,Set的存放是无序的

事实上,没有直接使用Collection接口的子类,都是通过它的子接口List和Set来实现的。

2.常用方法

import java.util.ArrayList;
import java.util.List;// 以ArrayList为例
public class CollectionMethod {public static void main(String[] args) {List list = new ArrayList();//add:添加单个元素list.add("jack");list.add(10);//list.add(new Integer(10))list.add(true);//remove:删除指定元素list.remove(0);//删除第一个元素list.remove(true);//指定删除某个元素//contains:查找元素是否存在System.out.println(list.contains("jack"));//T//size:获取元素个数System.out.println(list.size());//2//isEmpty:判断是否为空System.out.println(list.isEmpty());//F//clear:清空list.clear();//addAll:添加多个元素ArrayList list2 = new ArrayList();list2.add("红楼梦");list2.add("三国演义");list.addAll(list2);//containsAll:查找多个元素是否都存在System.out.println(list.containsAll(list2));//T//removeAll:删除多个元素list.add("聊斋");list.removeAll(list2);}
}

3.遍历方式

Iterator(迭代器)

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("小李飞刀", "古龙", 5.1));col.add(new Book("红楼梦", "曹雪芹", 34.6));//现在老师希望能够遍历 col 集合//1. 先得到 col 对应的 迭代器Iterator iterator = col.iterator();//2. 使用 while 循环遍历while (iterator.hasNext()) {                 //判断是否还有数据Object obj = iterator.next();            //返回下一个元素,类型是 ObjectSystem.out.println("obj=" + obj); }//3. 当退出 while 循环后 , 这时 iterator 迭代器,指向最后的元素//iterator.next();//NoSuchElementException//4. 如果希望再次遍历,需要重置我们的迭代器iterator = col.iterator();System.out.println("===第二次遍历===");while (iterator.hasNext()) {Object obj = iterator.next();System.out.println("obj=" + obj);}}
}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;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +'}';}
}
//老师教大家一个快捷键,快速生成 while => itit
//显示所有的快捷键的的快捷键 ctrl + j

for 循环增强


三、List接口

1.特点

2.常用方法

import java.util.ArrayList;
import java.util.List;public class ListMethod {public static void main(String[] args) {List list = new ArrayList();list.add("张三丰");list.add("贾宝玉");//void add(int index, Object ele):在 index 位置插入 ele 元素list.add(1, "韩顺平");//boolean addAll(int index, Collection eles):从 index 位置开始将 eles 中的所有元素添加进来List list2 = new ArrayList();list2.add("jack");list2.add("tom");list.addAll(1, list2);//Object get(int index):获取指定 index 位置的元素//int indexOf(Object obj):返回 obj 在集合中首次出现的位置System.out.println(list.indexOf("tom"));//2//int lastIndexOf(Object obj):返回 obj 在当前集合中末次出现的位置list.add("韩顺平");System.out.println(list.lastIndexOf("韩顺平"));//Object remove(int index):移除指定 index 位置的元素,并返回此元素list.remove(0);//Object set(int index, Object ele):设置指定 index 位置的元素为 ele , 相当于是替换.list.set(1, "玛丽");//List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合// 注意返回的子集合 fromIndex <= subList < toIndexList returnlist = list.subList(0, 2);System.out.println("returnlist=" + returnlist);}
}

3.遍历方式

4.ArrayList

 4.1 ArrayList的底层结构和源码分析

5.Vector

5.1 Vector的底层结构和源码分析

5.2 Vector 和 ArrayList 的比较

6.LinkedList

6.1 LinkedList 的底层操作机制 

 6.2 ArrayList 和 LinkedList 比较


四、Set接口

1.特点

2.常用方法

和 List 接口一样, Set 接口也是 Collection 的子接口,因此,常用方法和 Collection 接口一样.

3.遍历方式

4.HashSet

public class HashSet01 {public static void main(String[] args) {HashSet set = new HashSet();//说明//1. 在执行 add 方法后,会返回一个 boolean 值//2. 如果添加成功,返回 true, 否则返回 falseSystem.out.println(set.add("john"));//TSystem.out.println(set.add("lucy"));//TSystem.out.println(set.add("john"));//FSystem.out.println(set.add("jack"));//TSystem.out.println(set.add("Rose"));//T//3. 可以通过 remove 指定删除哪个对象set.remove("john");System.out.println("set=" + set);//3 个//set指向一个新对象set = new HashSet();System.out.println("set=" + set);//0//4 Hashset 不能添加相同的元素/数据?set.add("lucy");//添加成功set.add("lucy");//加入不了set.add(new Dog("tom"));//OKset.add(new Dog("tom"));//OkSystem.out.println("set=" + set);}
}class Dog { //定义了 Dog 类private String name;public Dog(String name) {this.name = name;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +'}';}
}

4.1 HashSet的底层机制

4.2 LinkedHashSet

5.TreeSet



五、Map接口

1.特点

2.常用方法

import java.util.HashMap;
import java.util.Map;@SuppressWarnings({"all"})
public class MapMethod {public static void main(String[] args) {//演示 map 接口常用方法Map map = new HashMap();//增加map.put("邓超", new Book("", 100));//OK//替换map.put("邓超", "孙俪");map.put("王宝强", "马蓉");//OKmap.put("宋喆", "马蓉");//OKmap.put("刘令博", null);//OKmap.put(null, "刘亦菲");//OK//remove:根据键删除映射关系map.remove(null);//get:根据键获取值Object val = map.get("鹿晗");//size:获取元素个数System.out.println("k-v=" + map.size());//isEmpty:判断个数是否为 0System.out.println(map.isEmpty());//F//clear:清除 k-v//map.clear();//containsKey:查找键是否存在System.out.println("结果=" + map.containsKey("hsp"));//T}
}class Book {private String name;private int num;public Book(String name, int num) {this.name = name;this.num = num;}
}

3.遍历方式

import java.util.*;@SuppressWarnings({"all"})
public class MapFor {public static void main(String[] args) {Map map = new HashMap();map.put("邓超", "孙俪");map.put("王宝强", "马蓉");map.put("宋喆", "马蓉");map.put("刘令博", null);map.put(null, "刘亦菲");map.put("鹿晗", "关晓彤");//第一组: 先取出 所有的 Key , 通过 Key 取出对应的 ValueSet keyset = map.keySet();//(1) 增强 forSystem.out.println("-----第一种方式-------");for (Object key : keyset) {System.out.println(key + "-" + map.get(key));}//(2) 迭代器System.out.println("----第二种方式--------");Iterator iterator = keyset.iterator();while (iterator.hasNext()) {Object key = iterator.next();System.out.println(key + "-" + map.get(key));}//第二组: 把所有的 values 取出Collection values = map.values();//这里可以使用所有的 Collections 使用的遍历方法//(1) 增强 forSystem.out.println("---取出所有的 value 增强 for----");for (Object value : values) {System.out.println(value);}//(2) 迭代器System.out.println("---取出所有的 value 迭代器----");Iterator iterator2 = values.iterator();while (iterator2.hasNext()) {Object value = iterator2.next();System.out.println(value);}//第三组: 通过 EntrySet 来获取 k-vSet entrySet = map.entrySet();// EntrySet<Map.Entry<K,V>>//(1) 增强 forSystem.out.println("----使用 EntrySet 的 for 增强(第 3 种)----");for (Object entry : entrySet) {//将 entry 转成 Map.EntryMap.Entry m = (Map.Entry) entry;System.out.println(m.getKey() + "-" + m.getValue());}//(2) 迭代器System.out.println("----使用 EntrySet 的 迭代器(第 4 种)----");Iterator iterator3 = entrySet.iterator();while (iterator3.hasNext()) {Object entry = iterator3.next();//System.out.println(next.getClass());//HashMap$Node -实现-> Map.Entry (getKey,getValue)//向下转型 Map.EntryMap.Entry m = (Map.Entry) entry;System.out.println(m.getKey() + "-" + m.getValue());}}
}

4.HashMap

4.1 HashMap的底层机制

5.HashTable

5.1 Properties

import java.util.Properties;@SuppressWarnings({"all"})
public class Properties_ {public static void main(String[] args) {Properties properties = new Properties();//增加//1. Properties 继承 Hashtable//2. 可以通过 k-v 存放数据,当然 key 和 value 不能为 null//properties.put(null, "abc");//抛出 空指针异常//properties.put("abc", null); //抛出 空指针异常properties.put("john", 100);//k-vproperties.put("lucy", 100);properties.put("lic", 100);//替换properties.put("lic", 88);//通过 k 获取对应值System.out.println(properties.get("lic"));//88//删除properties.remove("lic");//修改properties.put("john", "约翰");}
}

 6.TreeMap



六、总结



七、Collections工具类



八、参考

B站 韩顺平零基础学Java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/469797.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress好的网站主题

有什么好的网站主题&#xff0c;都分享在这里了。 蓝色风格的wordpress模板&#xff0c;好的wordpress网站主题&#xff0c;需要既好看&#xff0c;又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题&#xff0c;布局经典&#xff0c;设计好的&am…

Python一些可能用的到的函数系列124 GlobalFunc

说明 GlobalFunc是算网的下一代核心数据处理基础。 算网是一个分布式网络&#xff0c;为了能够实现真的分布式计算&#xff08;加快大规模任务执行效率&#xff09;&#xff0c;以及能够在很长的时间内维护不同版本的计算方法&#xff0c;需要这样一个对象/服务来支撑。Globa…

第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言

传奇开心果短博文系列 系列短博文目录Python的pyttsx3库技术点案例示例系列 短博文目录前言一、pyttsx3主要特点和功能介绍二、pyttsx3文字转语音操作步骤介绍三、多平台支持介绍和示例代码四、多语言支持介绍和示例代码五、自定义语言引擎介绍和示例代码六、调整语速和音量介绍…

2024年2月最新易支付系统全开源

2024.02 更新日志&#xff1a; 1.新增微信公众号消息提醒功能 2.重构转账付款功能&#xff0c;支持通过插件扩展 3.商户后台新增代付功能 4.后台新增付款记录列表 5.支付宝插件新增预授权支付 6.优化支付通道列表&#xff0c;支持翻页与快速复制通道 7.新增创建订单人机验…

express 定时删除 oss 垃圾图片

一&#xff1a; 删除垃圾图片 思路&#xff1a; 获取 oss 中存储的所有图片文件&#xff1b;获取数据库中存储的图片文件数据&#xff1b;对比差异&#xff0c;不在数据库中的 oss 图片文件即为要删除的垃圾图片。 实现&#xff1a; 1、获取所有 oss 文件 import OSS from…

前端秘法基础式(HTML)(第二卷)

目录 一.表单标签 1.表单域 2.表单控件 2.1input标签 2.2label/select/textarea标签 2.3无语义标签 三.特殊字符 一.表单标签 用来完成与用户的交互,例如登录系统 1.表单域 <form>通过action属性,将用户填写的数据转交给服务器 2.表单控件 2.1input标签 type…

【Python网络编程之Ping命令的实现】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python开发技术 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Python网络编程之Ping命令的实现 代码见资源&#xff0c;效果图如下一、实验要求二、协议原理2…

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…

数模.传染病模型plus

一、SIS模型 二、SIR模型 三、SIRS模型 四、SEIR模型

机器学习---规则学习(序贯覆盖、单条规则学习、剪枝优化)

1. 序贯覆盖 回归&#xff1a; 分类&#xff1a; 聚类&#xff1a; 逻辑规则&#xff1a; 读作&#xff1a;若&#xff08;文字1且文字2且...&#xff09;&#xff0c;则目标概念成立 规则集&#xff1a;充分性与必要性&#xff1b;冲突消解&#xff1a;顺序规则、缺省规则…

嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现

大家好&#xff0c;今天给大家介绍嵌入式Linux系统中的设备驱动开发&#xff1a;从设备树到驱动实现&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在嵌入式Linux系统中&#x…

Java网络编程 双向通信

目录 网络编程实例创建客户端创建服务端测试 网络编程 Java的网络编程是Java编程语言中用于实现网络通信的一组API和工具。通过Java的网络编程&#xff0c;开发人员可以在Java应用程序中实现客户端和服务器之间的通信&#xff0c;从而构建各种网络应用。 以下是Java网络编程的…