Java集合的常用!集合?并不难理解,只是排个队而已

Java集合的常用!集合?并不难理解,只是排个队而已_第1张图片

文章目录

  • 集合
    • 概述
    • 集合框架
      • set集合
      • list集合
      • map
  • 常用的集合
    • ArrayList定义
      • 常见方法
    • LinkedList
      • 常用方法
    • HashSet
      • 常用方法
    • HashMap
      • 常用方法
  • 结语

集合

知道常见的集合

会集合的简单操作

特点: 存储空间可变

概述

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

集合框架

分为Collection和map

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

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

set集合

set集合的元素是无序的

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

缺点:查找效率低

举个例子方便理解:

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

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

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

list集合

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

优点:查找效率高

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

举个例子方便理解:

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

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

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

map

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

常用的集合

ArrarList,LinkedList,HashSet,HashMap

ArrayList定义

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

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

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

常见方法

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


  1. ArraysList.add("元素"); //在ArraysList最后面追加元素
ArrayList<String> b = new ArrayList<>();
for (int i = 0; i<10; i++){
     
	b.add(Integer.toString(i));
}
System.out.println(b);

Java集合的常用!集合?并不难理解,只是排个队而已_第2张图片


  1. 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);

Java集合的常用!集合?并不难理解,只是排个队而已_第3张图片


  1. 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);

运行结果:
Java集合的常用!集合?并不难理解,只是排个队而已_第4张图片


  1. 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);

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


  1. 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);
}

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

LinkedList

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

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

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

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

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

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);

运行结果:

Java集合的常用!集合?并不难理解,只是排个队而已_第5张图片

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

不多做赘述
3. 改

LinkedList.set(下标, 元素);  //将该下标对应的元素修改
LinkedList.get();
LinkedList.getFirst();
LinkedList.getLast();
  1. 大小
LinkedList.size();   //返回链表大小

HashSet

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

常用方法

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);

结果:
Java集合的常用!集合?并不难理解,只是排个队而已_第6张图片

HashMap

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

常用方法

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);

结果展示:
Java集合的常用!集合?并不难理解,只是排个队而已_第7张图片

结语

多学,多练,多想;才能明白自己的水平,才能不被各种繁琐之事打扰,让我们共同勉励,成为祖国新一代的希望!——来自一个00后


你可能感兴趣的:(Java基础语法,java,数据结构)