java 三大集合_java中的三大集合入门笔记(简单实用)

为什么使用集合框架

如图:

1ae249c520093a14cc7a6b7c3698d77f.png

集合的好处:

集合弥补了数组的缺陷,它比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合适用于不同的场合。

Java集合主要分为以下3种类型

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

1.List: 三有产品:有顺序,有下标,有重复

2.Set: 三无产品:无顺序,无下标,无重复

3.Map: 键值对:key-value 通过键可以找到值

提示:

List和Set实现于 Collection 接口

List还有两个实现类 ArrayList LinkedList

Set也有两个实现类 HashSet TreeSet

Map也有两个实现类 HashMap TreeMap

如图:

afb831518e0511b3fe267c3705af4838.png

ArrayList和LinkedList

1.ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高

2.LinkedList采用链表存储方式。插入、删除元素时效率比较高

一、ArrayList介绍

3.使用ArrayList存储元素 如图:

0669205843c1e79887f7833382602250.png

4.List接口还提供的remove():移除、contains():是否包含

的方法

c73f7c7dd96933421c73bc8edf4ee6f4.png

5.List接口方法有很多,这里就不都演示了,它的常用方法

如下图:

ea4823077947601619a5d589b0966180.png

以下是代码演示部分

package cn.jbit.exec;

import java.util.ArrayList;

import java.util.List;

/**

* 使用ArryList存储和处理企鹅信息。

* @author 丿林

*/

public class Test1 {

public static void main(String[] args) {

// 1、创建多个企鹅对象

Penguin ououPenguin = new Penguin("欧欧", "Q仔");

Penguin yayaPenguin = new Penguin("亚亚", "Q妹");

Penguin meimeiPenguin = new Penguin("美美", "Q妹");

Penguin feifeiPenguin = new Penguin("菲菲", "Q妹");

// 2、创建ArrayList集合对象并把多个企鹅对象放入其中

List penList = new ArrayList();

penList.add(ououPenguin);

penList.add(yayaPenguin);

penList.add(meimeiPenguin);

penList.add(2, feifeiPenguin); // 添加feifeiPenguin到指定位置

// 3、输出集合中企鹅的数量

System.out.println("共计有" + penList.size() + "只企鹅。");

// 4、通过遍历集合显示各只企鹅信息

System.out.println("分别是:");

for (int i = 0; i < penList.size(); i++) {

Penguin dog = (Penguin) penList.get(i);

System.out.println(dog.getName() + "\t"

+ dog.getSex());

}

// 5、删除集合中第一个企鹅和feifeiPenguin企鹅

penList.remove(penList.size()-1);

penList.remove(feifeiPenguin);

// 6、显示删除后集合中各只企鹅信息

System.out.println("\n删除之后还有" + penList.size() + "只企鹅。");

System.out.println("分别是:");

for (int i = 0; i < penList.size(); i++) {

Penguin dog = (Penguin) penList.get(i);

System.out.println(dog.getName() + "\t" + dog.getSex());

}

//7、判断集合中是否包含指定企鹅信息

if(penList.contains(meimeiPenguin))

System.out.println("\n集合中包含美美的信息");

else

System.out.println("\n集合中不包含美美的信息");

}

}

二、LinkedList介绍

1.LinkedList集合类

插入、删除操作频繁时,可使用LinkedList来提高效率

LinkedList专门提供对头部和尾部元素进行添加和删除操作的方法

2.使用LinkedList存储元素

0a6387a8af17dccded80db520e90dda3.png

3.LinkedList的特殊方法

8c087c0cc311c02cfc45865ed3ad5968.png

Map接口(HashMap 、TreeMap )

1.Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作。最常用的实现类是HashMap

2.使用HashMap存储元素

c5e628cab544e9cb4d8a31ea0863c996.png

3.TreeMap:适用于按自然顺序或自定义顺序遍历键(key)。

HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。

4.Map接口常用方法

4d02afb144c4dbb238ade24d0c9172bf.png

5.遍历Map集合

方法1:通过迭代器Iterator实现遍历

获取Iterator :Collection 接口的iterator()方法

Iterator的方法

boolean hasNext(): 判断是否存在另一个可访问的元素

Object next(): 返回要访问的下一个元素

方法2: 增强for循环

8a1b454bdbe2cd89e2ece6abad07f5ae.png

以下是代码演示部分

package cn.jbit.exec;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

import java.util.Map;

import java.util.Set;

/**

* 使用HashMap存储和处理企鹅信息。

* @author 丿林

*/

public class Test4 {

public static void main(String[] args) {

/* 1、创建多个企鹅对象*/

Penguin ououPenguin = new Penguin(1,"欧欧", "Q仔");

Penguin yayaPenguin = new Penguin(2,"亚亚", "Q妹");

Penguin meimeiPenguin = new Penguin(3,"美美", "Q妹");

Penguin feifeiPenguin = new Penguin(4,"菲菲", "Q妹");

/* 2、创建HashMap集合对象并把多个企鹅对象放入其中*/

Map penguinMap=new HashMap();

penguinMap.put(ououPenguin.getId(),ououPenguin);

penguinMap.put(yayaPenguin.getId(),yayaPenguin);

penguinMap.put(meimeiPenguin.getId(),meimeiPenguin);

penguinMap.put(feifeiPenguin.getId(),feifeiPenguin);

/*3、通过迭代器依次输出集合中所有狗狗的信息*/

System.out.println("使用Iterator遍历,所有企鹅的昵称和品种分别是:");

Set keys=penguinMap.keySet();//取出所有key的集合

Iterator it=keys.iterator();//获取Iterator对象

while(it.hasNext()){

int key=it.next(); //取出key

Penguin penguin=penguinMap.get(key); //根据key取出对应的值

System.out.println(penguin.getName()+"\t"+penguin.getSex());

}

/*4、通过foreach依次输出集合中所有狗狗的信息*/

System.out.println("使用foreach语句遍历,所有企鹅的昵称和品种分别是:");

for(int key:keys){

Penguin penguin=penguinMap.get(key); //根据key取出对应的值

System.out.println(penguin.getName()+"\t"+penguin.getSex());

}

}

}

Set接口(HashSet 、TreeSet)

1.常用方法

first():返回此Set集合中第一个(最低)元素

last():返回此Set集合中最后一个(最高)元素

comparator():返回对Set进行排序的比较器,如果Set使用自然顺序,则返回null

headSet(T test):返回一个新的Set集合,拥有test(不包含)之前的所有对象

tailSet(T test):返回一个新的Set集合,拥有test(包含)之后的所有对象

subSet(T test1,E test2):返回一个新的Set集合,拥有test(包含)之后,test2(不包含)之前的所有对象。

public class set {

public static void main(String[] args) {

//创建String类型的TreeSet集合

TreeSet < String > tree = new TreeSet < String > ();

tree.add("zhangsan"); //添加元素

tree.add("lisi");

tree.add("wangwu");

System.out.print("tree的第一个元素:");

System.out.println(tree.first());

System.out.print("tree的最后一个元素:");

System.out.println(tree.last());

System.out.println("创建迭代器遍历集合");

Iterator < String > it = tree.iterator();

//遍历集合的方法

while(it.hasNext()) {

String string = it.next();

System.out.println(string);

}

System.out.println("取出lisi之前的对象元素");

it = tree.headSet("lisi").iterator();

while(it.hasNext()) {

String string = it.next();

System.out.println(string);

}

}

}

最后提一下:泛型集合

1.可以用于解决以下强制类型转换时容易出现的异常问题

List的get(int index)方法获取元素

Map的get(Object key)方法获取元素

Iterator的next()方法获取元素

3b972a8c8cc1c9f525ab284d9b537cfc.png

fc25796b8f05ff916e899a1d75b1294c.png

总结图

117f5a84266ad1fa4be66f61dfdca2e0.png

本文转自:https://blog.csdn.net/weixin_44490662/article/details/103043365

赞(4)

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

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

相关文章

Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...

1.什么是Spring beans&#xff1f;Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化&#xff0c;装配&#xff0c;和管理。这些beans通过容器中配置的元数据创建。比如&#xff0c;以XML文件中 的形式定义。Spring 框架定义的beans都是单件bean…

使用此首选项可加快Eclipse m2e配置

谁不认识他们。 Eclipse中的旧式JFace对话框可以使您直观地看到实际上是一个相当简单的XML或属性文件。 对于m2e&#xff0c;它看起来像这样&#xff1a; 不幸的是&#xff0c;此屏幕的加载速度有点慢&#xff0c;除了检查版本号和您将永远不会更改的其他内容之外&#xff0c…

【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!

【百度地图API】发布静态图API啦&#xff01;只需一个网址&#xff0c;即可展示定制百度地图&#xff01; 原文:【百度地图API】发布静态图API啦&#xff01;只需一个网址&#xff0c;即可展示定制百度地图&#xff01;摘要&#xff1a; 百度地图静态图API&#xff01;您无须执…

脚本在流程中的性能影响

我们经常看到人们出于各种目的而使用脚本&#xff08;例如&#xff0c;在服务任务&#xff0c;执行侦听器等中&#xff09;。 使用脚本和Java逻辑通常很有意义&#xff1a; 它不需要打包到jar中并放在classpath上 它使流程定义更易于理解&#xff1a;无需查看其他文件 逻辑是…

PowerDesigner使用教程

原文&#xff1a;http://www.cnblogs.com/huangcong/archive/2010/06/14/1757957.html PowerDesigner是一款功能非常强大的建模工具软件&#xff0c;足以与Rose比肩&#xff0c;同样是当今最著名的建模软件之一。Rose是专攻UML对象模型的建模工具&#xff0c;之后才向数据库建模…

红帽峰会2015所需的JBoss BPM内容指南

明年再见&#xff1f; 今年在Red Hat Summit上&#xff0c;我们在JBoss BRMS和JBoss BPM Suite演讲中获得了很多乐趣。 在DevNation周围也有一些社区会议&#xff0c;重点介绍了使我们的产品成为可能的项目。 您可以在他们的博客上找到此演讲的概述&#xff0c;并在其中提供…

设计模式 之 享元

享元模式&#xff08;Flyweight&#xff09; 运用共享技术有效地支持大量细粒度的对象。 还记得那年夏天一起在作文本上玩过的五子棋吗&#xff1f;五子棋是一种两人对弈的纯策略型棋类游戏&#xff0c;它起源于中国古代的传统黑白棋种之中的一个&#xff0c;不…

php制作简单的用户登陆,如何用php代码实现简单的用户登陆以及登陆验证功能

本文主要简单讲述了如何使用php实现简单的用户登陆以及登陆验证效果。1、首先实现通过Session实现用户的登录那么什么是session呢&#xff1f;session被译为会话&#xff0c;它主要是为了在一定访问期间在不同页面之间间传输数据&#xff0c;用来解决http协议无状态。session在…

Quick cocos2dx-Lua(V3.3R1)学习笔记(十)-----搭建安卓打包环境,用官方示例anysdk生成apk运行...

话说我这一篇就写搭建打包安卓环境&#xff0c;是不是有点过早了&#xff08;其实我主要是怕以后重装系统&#xff0c;忘了怎么搭建了&#xff09;&#xff0c;但是迟早要面对的痛苦&#xff0c;一直延后也不是办法&#xff0c;对吧。 在官方文档中&#xff0c;对于打包安卓apk…

php实现返回顶部,返回顶部js

返回顶部jsfunction goTopEx(){var objdocument.getElementById(“goTopBtn”);function getScrollTop(){return (document.documentElement.scrollTopdocument.body.scrollTop);}function setScrollTop(value){if(document.documentElement && document.documentEleme…

中国大学MOOC-数据结构基础习题集、06-2、旅游规划

题目链接&#xff1a;http://www.patest.cn/contests/mooc-ds/06-2 题目分析&#xff1a;陈姥姥说&#xff0c;这是Dijstra算法的一道题。题目是中文的&#xff0c;这里就不再啰嗦了。有一点提示一下&#xff0c;咱们平时用的Dijistra算法&#xff0c;是用来求最短路径的。这道…

iOS安全攻防(三):使用Reveal分析他人app

使用Reveal分析他人app准备工作1&#xff09;已越狱的设备&#xff0c;而且已安装了OpenSSH,MobileSubstrate等有用工具(Cydia源里安装)2&#xff09;本地已安装了Reveal操作步骤1&#xff09;拷贝framework和dylib到越狱机scp -r /Applications/Reveal.app/Contents/SharedSup…

JBoss BPM Travel Agency演示与现代BPM数据集成

不久前&#xff0c;我们启动了一个规模较大的JBoss Travel Agency演示项目&#xff0c;以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 &#xff0c;不仅向您展示了如何安装它&#xff0c;项目中各种规则和流程工件的含义&#xff0c;还向您介绍了在实际使用…

scala入门-10 隐式转换、隐式参数、隐式类

到目前为止&#xff0c;隐式转换是scala的重点和难点了&#xff0c;加油~ 我们先创建一个类名称叫Implicit.scala 再看一个隐式参数的例子&#xff1a; 上面的例子中使用了隐式参数&#xff0c;我们也可以明显的指明参数&#xff1a; 下面看一下隐式类&#xff1a; 相当于&…

连载《一个程序猿的生命周期》-2.城市校园生活

一个程序猿的生命周期 微信平台 口 号&#xff1a;职业交流&#xff0c;职业规划&#xff1b;面对现实&#xff0c;用心去交流、感悟。 公众号&#xff1a;iterlifetime 百木-ITer职业交流奋斗 群&#xff1a;141588103 微 博&#xff1a;http://www.weibo.com/u/57234…

excel使用MySQL数据,如何使用mysql完成excel中的数据生成

Excel是数据分析中最常用的工具&#xff0c;本篇文章通过mysql与excel的功能对比介绍如何使用mysql完成excel中的数据生成&#xff0c;数据清洗&#xff0c;预处理&#xff0c;以及最常见的数据分类&#xff0c;数据筛选&#xff0c;分类汇总&#xff0c;以及数据透视等操作。本…

Spring Batch –使用JavaConfig替换XML作业配置

我最近协助一个客户启动并运行了Spring Batch实现。 该团队决定继续为批处理作业使用基于JavaConfig的配置&#xff0c;而不是传统的基于XML的配置。 随着这越来越成为配置Java应用程序的一种常用方法&#xff0c;我觉得是时候更新Keyhole的Spring Batch系列了 &#xff0c;向您…

JBoss BPM Travel Agency的微服务迁移故事

不久前&#xff0c;我们启动了一个规模较大的JBoss Travel Agency演示项目&#xff0c;以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 &#xff0c;不仅向您展示了如何安装它&#xff0c;项目中各种规则和流程工件的含义&#xff0c;还向您介绍了在实际使…

eslint php,ESlint操作步骤详解

这次给大家带来ESlint操作步骤详解&#xff0c;ESlint操作的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。vue-cli脚手架创建的项目默认使用ESlint规则&#xff0c;启动项目的时候因为各种语法报错&#xff0c;不得不先停下了解一下什么是ESlint&…

动画原理——绘制正弦函数环绕运动椭圆运动

书籍名称&#xff1a;HTML5-Animation-with-JavaScript 书籍源码&#xff1a;https://github.com/lamberta/html5-animation 1.正弦函数。x位置递增&#xff0c;y位置用sin生成。 这段代码是不需要ball.js的。 代码如下&#xff1a; <!doctype html> <html><hea…