Java集合

举报
布小禅 发表于 2021/11/27 17:28:47 2021/11/27
【摘要】 Java集合

Java集合

知道常见的集合

会集合的简单操作

特点: 存储空间可变

存储多个数据时,经常会遇到长度不固定的情况,此时,就无法使用数组进行存储,此时就需要用到集合

1.集合框架

分为Collection和map

collection是集合,以每个元素分开储存在同一个集合

map是键值对的形式(什么是键值对?一个名字对应一个人就像这样:"z": 1这样,"z"是键,1是值,合在一起就叫键值对)储存

1.1set集合

set集合的元素是无序的

优点:删除和插入效率高,元素是无序的,不会引起其他元素的变化

缺点:查找效率低

举个例子方便理解:

set集合相当于是一个乱糟糟的大厅

你想在里面找某个人(查找元素),比较麻烦

但是你进去出来却不会引起什么变化

1.2list集合

list集合是有序的,和数组类似,只不过list集合的长度是动态的

优点:查找效率高

缺点:插入删除操作效率低,会引起元素位置的变化

举个例子方便理解:

list集合就相当于一个标注着名字的会议室

你要找某个人,很轻松就可以找到

但是你要是想在里面加个座位给新来的领导,就会很麻烦

1.3map

map使用键值对的形式储存数据,不算集合,但是在Java中却是整合在集合中的

2.常用的集合

ArrarList,LinkedList,HashSet,HashMap

2.1ArrayList定义

当然,由于集合在java.util 包中,因此在使用之前应该先导包 import java.util.ArrayList;

ArrayList<类型> 变量名 = new ArrayList<>();

这里的类型只能是引用数据类型,如果想储存基本数据类型,可以装箱

常见方法,当然少不了增删改查

1.增

ArrayList.add("元素"); //在ArrayList最后面追加元素

ArrayList<String> b = new ArrayList<>();
for (int i = 0; i<10; i++){
 b.add(Integer.toString(i));
}
System.out.println(b);

在这里插入图片描述在这里插入图片描述

2. 增

ArraysList.add(5, "在下标为5的位置追加引号中的内容");

ArrayList<String> b = new ArrayList<>();
for (int i = 0; i<10; i++){
 b.add(Integer.toString(i));

}
b.add(5,"sja");
System.out.println(b);

在这里插入图片描述在这里插入图片描述

3. 删

ArrayList.remove(下标); //删除下标元素


ArrayList<Integer> b = new ArrayList<>();
b.add(1);
b.add(2);
b.add(3);
b.add(4);
b.add(5);
b.remove(3);
System.out.println(b);

运行结果: 在这里插入图片描述

4. 改

ArrayList.set(下标); //通过下标修改元素

ArrayList<String> b = new ArrayList<>();
for (int i = 0; i < 10; i++) {
b.add(Integer.toString(i));
}
b.set(3, String.valueOf(10));
System.out.println(b);

运行结果: 在这里插入图片描述

5. 查

ArrayList.get(下标); //通过下标访问元素

ArrayList<String> b = new ArrayList<>();
for (int i = 0; i < 10; i++) {
b.add(Integer.toString(i));
 }
String a = b.get(3);
System.out.println(a);
}

运行结果: 在这里插入图片描述

2.2LinkedList

链表是一种线性表,但是却不是按线性的顺序储存数据,而是每个节点里存到下一节点的地址(这个是不是不太好理解,下面详讲)

例子理解: 就相当于你去操场跳广播体操,每个人一小块地方,需要在指定时间內按照之前的顺序站好,你如果把那些小 块块都一个个排序好序号,然后再找,固然可以(这是数组的方法),但是也多多少少有点费事,而这个链表 就是让你记得站在你旁边的人的位置,而去找自己的位置

链表有单向链表和双向链表

单向链表:每个元素只记后面元素的位置,而不管其他

双向链表:不仅仅后面,还有前面

LinkedList和ArrayList相差不大,但是LinkedList的增删效率高,改查效率低

增删改查

1. 增:

LinkedList.add();   //往链表后面添加元素
LinkedList.addFirst();  //往链表开头添加元素
LinkedList.addLast();   //往链表末尾添加元素

//实操理解
LinkedList<String> te1 = new LinkedList<>();
te1.add("I");
te1.add("am");
te1.add("Smly");
System.out.println(te1);

运行结果:

在这里插入图片描述在这里插入图片描述
//接上面的代码
te1.addFirst("hello");
te1.addLast("bye");
System.out.println(te1);

运行结果:

在这里插入图片描述在这里插入图片描述

2. 删

LinkedList.remove();
LinkedList.removeFirst();
LinkedList.removeLast();

不多做赘述

3. 改

LinkedList.set(下标, 元素);  //将该下标对应的元素修改

4. 查

LinkedList.get();
LinkedList.getFirst();
LinkedList.getLast();

5. 大小

LinkedList.size();   //返回链表大小

2.3HashSet

HashSet是set集合,元素是无序的,并且不允许有相同的元素出现

1.常用方法

HashSet.add();   //增
HashSet.remove();  //删
HashSet.size();  //大小
HashSet.contains();  //判断元素是否存在 

代码展示:

HashSet<String> ha1 = new HashSet<>();
ha1.add("Hello");
ha1.add("world");
ha1.add("!");
ha1.add("。");
System.out.println(ha1);
Boolean cunZai = ha1.contains("a");
int dax = ha1.size();
System.out.println(cunZai+" "+dax);
ha1.remove("。");
System.out.println(ha1);

结果: 在这里插入图片描述

2.4HashMap

是map,键值对形式存储数据,可以自由规定键值对的类型 现在讲解使用键字符串,值整型来演示

1.常用方法

HashMap.put(键,值);  //增
HashMap.remove(键);  //删
HashMap.get(键);   //查
HashMap.size();   //大小
HashMap.clear();  //全部删除

代码示例:

HashMap<String,Integer> hama = new HashMap<>();
hama.put("Jerry", 13);
hama.put("Jack", 16);
hama.put("Tom", 18);
hama.put("TextClear", 11111);
System.out.println(hama);
hama.remove("TextClear");
System.out.println(hama);
int age = hama.get("Tom");
int size = hama.size();
System.out.println(age+" "+size);
hama.clear();
System.out.println(hama);

结果展示: 在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。