java中常用的3个容器对象ArrayList、LinkedList和HashMap
前言
java中容器对象主要用来存储其他对象,根据实现原理不同,主要有3类常用的容器对象:
1、ArrayList 使用数组结构存储容器中的元素
2、LinkedList 使用链表结构存储容器中的元素
3、HashMap 使用Hash原理,同时使用数组和链表结构
一、ArrayList 用法
在src目录右键-新建一个包:com.my.container
在包com.my.container下新建一个类Container,代码如下:
package com.my.container;
import java.util.ArrayList;
import java.util.Random;
public class Container {
public static void main(String[] args) {
//创建一个ArrayList对象,创建的时候,最好指定这个对象存储什么类型的对象,这里存储String对象元素。
ArrayList<String> names = new ArrayList<>();
//向容器中添加元素
names.add("小明");
names.add("大明");
//查看容器有多少个元素
System.out.println(names);
//向容器中删除一个元素
names.remove(0); //删除下表位置是0的元素
//修改位置是0 的元素,改为 明天
names.set(0,"明天");
//查看容器有多少元素
System.out.println(names);
//清空容器的所有元素
names.clear();
//循环添加10个元素
Random random = new Random();
for (int i = 0 ; i < 10 ;i++){
names.add("嫦娥"+random.nextInt(100)+"号");
}
//遍历容器中的元素,把所有元素都访问一遍
for(int i=0; i<names.size(); i++){
System.out.println("第"+(i+1)+"个元素为:" + names.get(i)); // get方法,根据下标获取元素
}
}
}
运行以上代码,体会容器 ArrayList的增、删、改、查 的操作。
二、LinkedList 用法
在Container类的main函数中,继续添加代码,把Arraylist相关的代码注释或删除。
package com.my.container;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Random;
public class Container {
public static void main(String[] args) {
//创建一个 LinkedList 对象 linkedNames,是用链表结构存储元素数据的
LinkedList<String> linkedNames = new LinkedList<>();
//增加一个元素
linkedNames.add("嫦娥1");
linkedNames.add("嫦娥2");
linkedNames.add("嫦娥3");
//删除一个元素
linkedNames.remove(1);
//修改一个元素
linkedNames.set(1,"嫦娥100");
System.out.println(linkedNames);
//清空容器的所有元素
linkedNames.clear();
//循环添加10个元素
Random random2 = new Random();
for (int i = 0 ; i < 10 ;i++){
linkedNames.add("嫦娥"+random2.nextInt(100)+"号");
}
//遍历容器中的元素,把所有元素都访问一遍
for(int i=0; i<linkedNames.size(); i++){
System.out.println("第"+(i+1)+"个元素为:" + linkedNames.get(i)); // get方法,根据下标获取元素
}
}
}
运行,体会容器 LinkedList的增、删、改、查 的操作(与ArrayList几乎一致)。
区别:LinkedList使用链表存储元素,插入、删除效率高,但随机读效率较低;
ArrayList使用数组存储元素,插入、删除效率较低,但随机读效率高。
三、HashMap 用法
在Container类的main函数中,继续添加代码,把Arraylist和LinkedList相关的代码注释或删除。package com.my.container;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Random;
public class Container {
public static void main(String[] args) {
//创建一个 HashMap 对象 mapNames,是用链表结构存储元素数据的
HashMap<String,String> mapNames = new HashMap<>();
//增加1个元素
mapNames.put("NO1","嫦娥1号");
mapNames.put("NO2","嫦娥2号");
mapNames.put("NO3","嫦娥3号");
//删除1个元素
mapNames.remove("NO2");
//修改1个元素
mapNames.put("NO3","嫦娥33号");
System.out.println(mapNames); //打印mapNames中所有元素
//清空mapNames元素
mapNames.clear();
//循环添加10个元素
Random random3 = new Random();
for (int i = 0 ; i < 10 ;i++){
mapNames.put("NO"+i,"嫦娥"+random3.nextInt(100)+"号");
}
//遍历容器中的元素,把所有元素都访问一遍
int i = 0;
for(String key :mapNames.keySet()){ //先获取key的集合,然后遍历每个key,
i++; //定义i用来计数
System.out.println("第"+(i+1)+"个元素为:"+ mapNames.get(key)); // get方法,根据key 获取元素
}
}
}
运行上面的代码,体会 HashMap的增、删、改、查操作。
运行截图如下: