java集合基础_java常用集合基础知识

【纯出自个人笔记,如有错误,望改正,谢谢哈!

10e12d57ce6042798b6d9bdae3515ec4.gif学习~】

一、Java集合

1、集合类:容器类 装对象的(不能存放基本数据类型,但是里面看到的其实是包装类型)

java.util包

ArrayList底层是一个对象数组

--------------------------------------------------------------------------------------------

List中是可以存放重复元素的。Set是不能有重复元素.

Ⅰ:ArrayList:

a. 添加 :

add();里面可以存放字符串或者基本包装类型

ArrayList也可以存放布尔类型和对象

ArrayList list=new ArrayList();

list.add(1,"aa");这是指将aa字符串存放在arraylist集合索引的1位置(添加到指定位置);

list.size();是获取元素的个数,和数组的length,字符串的length()差不多。

list.add(list1);add里面还是可以放集合的

b.修改 :

list.set(0,200);这是修改指定位置的元素,这里是指修改了arraylist集合0索引的值该为200;集合的索引和数组的下标差不多。

c.获得 :

list.get(0);获得,这是获得list集合里的0索引处的值。它返回的类型是Object(Object obj=list.get(0);) 然后可以直接输出这s.o.p(obj);打印出来的就是list集合的元素

d.遍历集合:

用for循环也可以,但是集合List集合一般都用迭代器遍历集合(Iterator,下面介绍)

e.清空集合元素:

list.clear();清空掉集合中所有的元素,如果清空,输出就一对中括号“[]”表示集合里面没有元素了。o(∩_∩)o

f.移除/删除 集合中的元素:

remove();这是删除集合中的某个元素。比如list.remove(1);这就是删除掉集合中索引为1的元素(第二个),list.remove("aa");这是删除掉集合中的元素,就是如果集合中有aa的字符串,就删掉。  -----list.remove(new Integer(12));注意这种:要删除集合中的数值,就必须要这样(要指定包装类)否则删除的就是索引为12的元素,如果元素个数没有13个,那么就会出现 下标越界异常。

---------------------------------------------------------------------------------------

Ⅱ:LinkedList:ArrayList便于进行修改、获得值的操作  LinkedList便于进行增加和删除操作

a.添加元素:

LinkedList添加元素也是add();基本用法和ArrayList差不多。但是LinkedList多了2个功能:addFirst()和addLast();这2个,比如list.addFirst("asd");这是在集合的第一个位置放置asd的字符串;list.addLast("aa");这是在集合的最后一个位置放置aa字符串;

b.遍历:

和arraylist也是一样的。既可以用For循环遍历,也可以用迭代器遍历,推荐迭代器。 需要注意的是:在迭代器循环体内是不可以直接对集合进行添加删除操作的。

---------------------------------------------------------------------------------------------

Ⅲ:Stack类表示后进先出(LIFO)的对象堆栈(继承自Vector)。

a.添加元素

stack添加元素是用push()方法的,比如:s.push("aaa");这是指在statck中添加aaa元素压入栈中

b.移除元素:

s.pop();这是移除栈顶的元素  是栈顶

c.查看元素:

Syso(s.peek());查看栈顶的元素,表示只查看不剔除。

---------------------------------------------------------------------------------------------

Ⅳ:Vector  底层是对象数组,线程安全的(同步)

Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

---------------------------------------

以上是List 列表的知识点

===================================================================================

下面是Set 集的知识点回顾:

===================================================================================

Set   不能有重复的元素、没有索引

Ⅰ、HashSet

a.添加元素:

set.add("aa"); set.add(new Object());基本上也差不多

b.清除元素用的也是clear();

c.移除  remove()的用法

d,遍历HashSet: 注意,这里只能用迭代器(Iterator)遍历,因为Set集中是没有索引的,所以不能用for。

例如: Iterator it = set.iterator();

while(it.hasNext()){

Object temp = it.next();

System.out.println(temp);

}

e,//由Object类中继承来的hashcode、equals方法

//Set中判断是否是重复的元素的过程:

//1、调用对象的hashcode方法,看返回的哈希码值是否相同,若不相同,则认为是不同的对象

//2、若相同,则再调用equals方法进行判断,若返回false,则认为是不同的对象,否则(返回的是true)则认为是同一个对象

例如 Student stu1 = new Student(1000,"张三");

Student stu2 = new Student(1001,"张三");

// System.out.println(stu1.hashCode());

// System.out.println(stu2.hashCode());

set.add(stu1);

set.add(stu2);

-----------------------------------------------------------------------------------------------

Set:不按照索引、不按照放入的次序存储元素-->无序的

//不能存放重复元素

Ⅱ:TreeSet:具有排序功能的

a.添加元素也是add();//若放入的是数值,则按照数值大小升序排列;//若是字符串则按照字母的字 典顺序。需要注意的是:放入的元素得是同一类型的。

b//若要将自定义的对象放入TreeSet中,必须该对象所在的类是实现了Comparable接口

例如:Student stu1 = new Student(1003,"zhangsan");

Student stu2 = new Student(1000,"lisi");

Student stu3 = new Student(1001,"wangwu");

set.add(stu1);

set.add(stu2);

set.add(stu3);

Iterator it = set.iterator();

while(it.hasNext()){

Student stu = it.next();

System.out.println(stu.getId()+"\t"+stu.getName());

}

System.out.println(set);

public class Student implements Comparable{

private int id;

private String name;

>>>>>>(此处省略构造方法和set、get方法)<<<<<

@Override

public int hashCode() {

// System.out.println("调用了hashcode方法");

// return super.hashCode();

return 100;

}

@Override

public boolean equals(Object obj) {

// System.out.println("调用了equals方法");

// return super.equals(obj);

// return true;

Student stu = (Student)obj;

if(this.id==stu.id&&this.name.equals(stu.name)){

return true;

}else{

return false;

}

}

//排序规则

@Override

public int compareTo(Student stu) {

// return this.id-stu.id;//按照id的升序

// return stu.id-this.id;//按照id的降序

// return this.name.compareTo(stu.name);//按照name的升序

return stu.name.compareTo(this.name);

}

}

上面是Set集的回顾(都实现Collection接口)

===================================================================================

下面是Map映射知识点回顾

===================================================================================

/Map:映射关系   存放的是键值对key-value

Map,存放元素是put();方法

1.HashMap:不是线程安全的   key和value都可以为null(但key只能有一个null值,value可以多个)

例如 HashMap map = new HashMap();

map.put("", "");

map.put(null, null);//put()是放入元素

System.out.println(map);

2。Hashtable:1、线程安全的  古老集合  2、key和value都不能为null;获得value值:Object temp = map.get(23);//根据key获得value:-------->get(key);

例如:   map.put("sa", "abc");

map.put(23, 34);

map.put(34, "cdf");

map.put(new Object(), "value");

注意map.put(null, "as");//key不能为null

map.put("aa", null);//value也不能为null

Hashtable遍历:

Set sets = map.keySet();//返回所有的key  Map中的key是以Set形式存放的,获得所有KEY

Iterator it = sets.iterator();

while(it.hasNext()){

temp = it.next();//将key循环遍历出来

Object value = map.get(temp);//然后根据Key来遍历出value的值

System.out.println(value);

}

System.out.println(map);

3.TreeMap: key具有排序功能    key不能为null value可以为null

//若key是数值  按照数值大小的升序

/*map.put(1001, "value");

map.put(1000, "lue");

map.put(1002, "alue");*/

//若key是字符串,按照字母的字典顺序

/*map.put("bb", 23);

map.put("aa", 123);

map.put("cc", 3323);*/规则和TreeSet差不多,同样只能存放一种类型,只不过TreeMap是一种类型的key。

//若key是自定义的对象,该对象所在的类实现Comparable接口

// Student stu1 = new Student(1003,"zhangsan");

// Student stu2 = new Student(1000,"lisi");

// Student stu3 = new Student(1001,"wangwu");

// map.put(stu1, 123);

// map.put(stu2, 23);

// map.put(stu3, 323);

//

// Set sets = map.keySet();

// Iterator it = sets.iterator();

// while(it.hasNext()){

// Student stu = it.next();

// System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+map.get(stu));

// }

// System.out.println(map);

// map.put(null, "");//key不能为null

map.put("aa", null);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【有不对的地方,多多批正

a7602bb6fc46d0669cc00223cb0b3d80.gif

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

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

相关文章

java cookie安全_cookie的安全性问题

HTTP协议&#xff1a;(1)请求组成部分&#xff1a;请求行&#xff1a;(get或者post请求&#xff1b;请求路径(不包括主机) &#xff1b;http1.1)请求头&#xff1a;请求头是浏览器交给服务器的一些信息(比较cookie啥的)请求体&#xff1a;只有post请求有请求体&#xff0c;get请…

python画环形图_用Python把图做的好看点:用Matplotlib画个环形图

P老板&#xff1a;小Lo啊&#xff0c;你觉得这几个图好看吗我&#xff1a;好看&#xff0c;好看P老板&#xff1a;我也觉得&#xff0c;这个月的月报&#xff0c;就用这个把&#xff0c;你给我几个&#xff0c;我看看我&#xff1a;.....于是乎&#xff0c;我们今天的目标是什么…

Java main()方法

在 Java 中&#xff0c;main() 方法是 Java 应用程序的入口方法&#xff0c;程序在运行的时候&#xff0c;第一个执行的方法就是 main() 方法。main() 方法和其他的方法有很大的不同。 下面先来看最简单的一个 Java 应用程序 HelloWorld&#xff0c;我们将通过这个例子讲解 Ja…

Java方法的可变参数

在具体实际开发过程中&#xff0c;有时方法中参数的个数是不确定的。为了解决这个问题&#xff0c;在 J2SE 5.0 版本中引入了可变参数的概念。 声明可变参数的语法格式如下&#xff1a; methodName({paramList},paramType…paramName)其中&#xff0c;methodName 表示方法名称…

python中ans的用法_python cx_Oracle基础使用方法

问题使用python操作oracle数据库&#xff0c;获取表的某几个字段作为变量值使用。使用Popensqlplus的方法需要对格式进行控制&#xff0c;通过流获取这几个字段值不简洁(个人观点……)。(优点是能够使用sqlplus的方法直接访问sql文件&#xff0c;不需要考虑打开/关闭连接&#…

java gradle 资源访问_java在gradle工程访问src/test/resources目录下的资源配置文件

package com.jiepu;import java.io.File;import java.net.URISyntaxException;import java.util.Map;import java.util.Properties;//java在gradle工程访问src/test/resources或者src/main/resources目录下的资源配置文件public class TestMain{public static void main(String…

python 匹配字符串map lambda函数_Python map amp; reduce 以及lambda匿名函数 - jvisualvm - ITeye博客...

map()map()函数接收两个参数&#xff0c;一个是函数&#xff0c;一个是Iterable&#xff0c;map将传入的函数依次作用到序列的每个元素&#xff0c;并把结果作为新的Iterator返回。使用map实现一个f(x) x * x的功能def f(x):return x * xm map(f, list(range(1, 10)))# [1, 4…

java执行数据库命令行_java程序执行命令行,解锁数据库表

有些表锁的时间长或其他原因&#xff0c;在plsql中不能解锁&#xff0c;只能用命令行解锁。有些功能跨平台系统的交互偶尔会锁表&#xff0c;就需要自动解锁。下面是解锁的代码&#xff1a;package com.lg.BreakOracleUtils;import com.lg.DB.DBProjp;import com.lg.database.D…

python display函数_【python】pandas display选项

import pandas as pd1、pd.set_option(expand_frame_repr, False)True就是可以换行显示。设置成False的时候不允许换行2、pd.set_option(display.max_rows, 10)pd.set_option(display.max_columns, 10)显示的最大行数和列数&#xff0c;如果超额就显示省略号&#xff0c;这个指…

Java查询个人信息

每个员工都会有自己的档案&#xff0c;主管可以查看在职员工的档案。使用 Java 创建一个员工实体类&#xff0c;然后通过构造方法创建一个名为“王洁”的员工&#xff0c;最后打印出员工档案信息。 1 . 创建 Person 类&#xff0c;在该类中定义个人基本信息属性&#xff0c;并…

java幻灯片播放代码_简单常用的幻灯片播放实现代码

幻灯片自动播放图片是当前网站比较流行的一个展示方式。在网上我们能找到各种特效丰富的幻灯片插件和代码。这里项目需要&#xff0c;我自己做了一个简单的&#xff0c;就不详细讲解了&#xff0c;代码很简单。直接看效果图和代码吧。所有代码 ppt.html&#xff0c;需要提供相应…

ssms没有弹出服务器验证_powerbi报表服务器搭建链接

作品展示​www.chinapowerbi.com安装 Power BI 报表服务器所要满足的硬件和软件要求 - Power BI​docs.microsoft.comDownload 用于基于 x64 的系统的 Windows 8.1 更新程序 (KB2919442) from Official Microsoft Download Center​www.microsoft.comDownload Windows Server 2…

Java析构方法

析构方法与构造方法相反&#xff0c;当对象脱离其作用域时&#xff0c;系统自动执行析构方法。析构方法往往用来做清理垃圾碎片的工作&#xff0c;例如在建立对象时用 new 开辟了一片内存空间&#xff0c;应退出前在析构方法中将其释放。 在 Java 的 Object 类中还提供了一个 …

2048java课程设计报告_2048小游戏-Java-课程设计报告书

《2048小游戏-Java-课程设计报告书》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《2048小游戏-Java-课程设计报告书(31页珍藏版)》请在金锄头文库上搜索。1、JAVA 语言程序设计课程设计报告2048 智力小游戏设计专业班级&#xff1a; 计算机科学与技术嵌入 13-1 学生…

python批量音频转格式_python将mp3格式批量转化为wav格式

语音识别无论是接口还是开源的项目&#xff0c;大多情况下都需要将语音格式转化为wav格式。首先&#xff0c;需要安装pydub库&#xff0c;pip install pydub 就行。接下来将你需要转化的mp3文件放入文件夹&#xff0c;创建好需要存入的wav文件夹。接下来python 代码实现 &#…

Java包详解

Java 引入了包&#xff08;package&#xff09;机制&#xff0c;提供了类的多层命名空间&#xff0c;用于解决类的命名冲突、类文件管理等问题。 包允许将类组合成较小的单元&#xff08;类似文件夹&#xff09;&#xff0c;它基本上隐藏了类&#xff0c;并避免了名称上的冲突…

groovy java_在java中使用groovy怎么搞

临摹微笑一种基于Java虚拟机的动态语言&#xff0c;可以和java无缝集成&#xff0c;正是这个特性&#xff0c;很多时候把二者同时使用&#xff0c;把groovy作为java的有效补充。对于Java程序员来说&#xff0c;学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包)&#x…

python自动控制库_一个可以自动化控制鼠标键盘的库:PyAUtoGUI

PyAutoGUI 不知道你们有没有用过&#xff0c;它是一款用Python自动化控制键盘、鼠标的库。但凡是你不想手动重复操作的工作都可以用这个库来解决。如果&#xff0c;我想半夜时候定时给发个微信&#xff0c;或者每天自动刷页面等操作&#xff0c;它能完全模拟手动操作&#xff0…

Java使用自定义包

包的声明和使用非常简单&#xff0c;在了解基本语法之后&#xff0c;示例在 Java 程序中声明包&#xff0c;以及不同包之间类的使用。 1 创建一个名为 com.dao 的包。 2 向 com.dao 包中添加一个 Student 类&#xff0c;该类包含一个返回 String 类型数组的 GetAll() 方法。S…

python去掉一个最高分和最低分求平均数_excel去掉一个最高分和最低分求平均数 - 卡饭网...

怎么快速计算考试成绩的最高分、最低分、平均分&#xff1f;怎么快速计算考试成绩的最高分、最低分、平均分&#xff1f; 我们可以使用Excel工作表快速计算出学校考试成绩的最高分.最低分和平均分,不需要逐个计算和核查,下面就跟小编看一下操作方法.具体如下:1. 第一步,打开一个…