Java集合的使用
创建和使用集合
定义:集合是一个可变数组
List集合存储有序可重复序列
点击查看详细代码
import java.util.*;
public class List01 {
public static void main(String[] args) {
/**
*创建List集合
*/
List list = new ArrayList();
List list1 = new LinkedList();
List list2 = new Vector();
/**
*向集合中插入值,可插入Object类型的值
*/
list.add(12345);
list.add("狗剩");
list.add(true);
list.add(null);
list.add("abcd");
list1.add(12345);
list1.add("狗剩");
list1.add(true);
list1.add(null);
list1.add("abcd");
/**
*如何将集合中的值插入数组
*/
int l1 = 0;
int l2 = 0;
String[] strings = new String[5];
int[] ints = new int[5];
for(Object c : list){
if(c instanceof String){
strings[l1++] = (String) c;
}else if(c instanceof Integer){
ints[l2++] = (int)c;
}
}
System.out.println("String数组:" + Arrays.toString(strings));
System.out.println("int数组:" + Arrays.toString(ints));
/**
*如何做到一边向数组插入值,一边删除集合中的值
*/
System.out.println("遍历前:"+list1.size());
String[] strings1 = new String[5];
int[] ints1 = new int[5];
Iterator iterator = list1.iterator();
//遍历
while (iterator.hasNext()){
Object next = iterator.next();
if(next instanceof String){
//先将值添加到数组后赋值
strings1[l1++] = (String)next;
//System.out.println(next);
//删除
iterator.remove();
}else if(next instanceof Integer){
ints1[l2++] = (Integer)next;
iterator.remove();
}
}
System.out.println("遍历后:"+list1.size());
System.out.println("数组1:"+Arrays.toString(strings1));
System.out.println("数组2:"+Arrays.toString(ints1));
}
}
运行结果:
String数组:[狗剩, abcd, null, null, null]
int数组:[12345, 0, 0, 0, 0]
遍历前:5
遍历后:2
数组1:[null, null, 狗剩, abcd, null]
数组2:[0, 12345, 0, 0, 0]
基础扩展
- Set集合存储无序不可重复序列
点击查看详细代码
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Set01 {
public static void main(String[] args) {
//创建集合
Set set = new HashSet();
Set set1 = new TreeSet();
//向集合中添加值
set.add("二狗");
set.add("abcd");
set.add(0123);
set.add(true);
set.add(0123); // 重复的元素会覆盖
set.add(null);
System.out.println(set);
}
}
运行结果:
[null, 二狗, 83, abcd, true]
- Map集合以键值对的形式存储,不可重复
点击查看详细代码
import java.util.*;
public class Map01 {
public static void main(String[] args) {
Map map = new HashMap();
Map map1 = new TreeMap();
//添加键值对
map.put(null, null);
map.put("age", 23);
map.put("sex", 0);
map.put("sex", 0); //重复的元素会覆盖
/**
* 遍历map集合中的键值对
*/
Set entryset = map.entrySet();
Iterator iterator = entryset.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
System.out.println();
/**
* forEach遍历
*/
map.forEach((key, value) -> {
System.out.println("key:"+key+",value:"+value);
});
}
}
特性
- ArrayList集合查询快,增删慢;LinkedList集合查询慢,增删快;Vector集合线程安全,效率低
点击查看详细代码
import java.util.*;
public class List02 {
/**
*测试增删速度
* 插入1000000个数的时间
* 插入10000000个数的时间
*/
public static void main(String[] args) {
//获取当前时间戳
long l1 = System.currentTimeMillis();
//向集合中插入数值
List list = new ArrayList();
for(int i = 0; i<1000000; i++){
list.add(i);
}
long l2 = System.currentTimeMillis();
System.out.println("ArrayList:" + (l2 - l1));
System.out.println();
long l3 = System.currentTimeMillis();
List list1 = new LinkedList();
for(int i = 0; i<1000000; i++){
list1.add(i);
}
long l4 = System.currentTimeMillis();
System.out.println("LinkedList:" + (l4 - l3));
System.out.println();
long l5 = System.currentTimeMillis();
List list2 = new Vector();
for(int i = 0; i<1000000; i++){
list2.add(i);
}
long l6 = System.currentTimeMillis();
System.out.println("Vector:" + (l6 - l5));
System.out.println();
}
}
插入1000000个数运行结果:
ArrayList:32
LinkedList:198
Vector:20
插入10000000个数运行结果:
ArrayList:2821
LinkedList:5205
Vector:801
- Set集合的特性
点击查看详细代码
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Set02 {
/**
*测试增删速度
* 插入100000个数的时间
* 插入10000000个数的时间
*/
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
Set Set = new HashSet();
for(int i = 0; i < 1000000; i++){
Set.add(i);
}
long l2 = System.currentTimeMillis();
System.out.println("HashSet:" + (l2 - l1));
long l3 = System.currentTimeMillis();
Set set1 = new TreeSet();
for(int i = 0; i < 1000000; i++){
set1.add(i);
}
long l4 = System.currentTimeMillis();
System.out.println("TreeSet:" + (l4 - l3));
}
}
插入100000个数的运行结果
HashSet:70
TreeSet:112
插入10000000个数的运行结果
HashSet:2869
TreeSet:4992
- Map集合的特性
点击查看详细代码
public class Map02 {
/**
*测试增删速度
* 插入100000个数的时间
* 插入10000000个数的时间
*/
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
HashMap hashMap = new HashMap();
for(int i = 0; i<100000; i++){
hashMap.put(i,i);
}
long l2 = System.currentTimeMillis();
System.out.println("HashMap:" + (l2 - l1));
long l3 = System.currentTimeMillis();
LinkedHashMap hashMap2 = new LinkedHashMap();
for(int i = 0; i<100000; i++){
hashMap2.put(i,i);
}
long l4 = System.currentTimeMillis();
System.out.println("TreeMap:" + (l4 - l3));
}
}
插入100000个数的运行结果:
HashMap:24
TreeMap:16
插入10000000个数的运行结果:
HashMap:5825
TreeMap:5106
Java集合的使用的更多相关文章
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- java集合你了解多少?
用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...
- 深入java集合学习1-集合框架浅析
前言 集合是一种数据结构,在编程中是非常重要的.好的程序就是好的数据结构+好的算法.java中为我们实现了曾经在大学学过的数据结构与算法中提到的一些数据结构.如顺序表,链表,栈和堆等.Java 集合框 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- Java 集合框架
Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...
- Java集合概述
容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...
- 深入java集合系列文章
搞懂java的相关集合实现原理,对技术上有很大的提高,网上有一系列文章对java中的集合做了深入的分析, 先转载记录下 深入Java集合学习系列 Java 集合系列目录(Category) HashM ...
随机推荐
- 微信小程序云开发-云存储-上传单张照片到云存储并显示到页面上
一.wxml文件 页面上写上传图片的按钮,按钮绑定chooseImg. <button bindtap="chooseImg" type="primary" ...
- 简单快速安装Apache+PHP+MySql服务环境(三)—— 下载安装phpmyadmin
为了方便在Linux上操作mysql数据库,打算安装一个phpmyadmin,不过在下载安装的过程中出现了一些坑,特此记录. 1. 在官网上下载phpmyadmin https://files.php ...
- C++第五十篇 -- 获取串口的描述信息
如何知道自己的电脑上有无串口呢? -- 手动 1. 查看电脑,看是否有串口器件(串口是一个九针的D型接口) 2. 在设备管理器上查看 乍一看,还以为是有两个串口,其实仔细看描述就知道,这是蓝牙虚拟串口 ...
- Python 接口之request ,headers格式不对
复制heardes格式,模拟请求报错 原因:粗心,headers带了空格
- 最短路径问题 Dijkstra ——Python实现
# 最短路径算法 Dijkstra # 输入:含权有向图 G=(V,E),V={1,2,3...n} # 输出:G中顶点 1 到各个顶点地最短距离 Dijkstra算法各点权值变化情况: 1 ...
- [.NET大牛之路 006] 了解 Roslyn 编译器
.NET大牛之路 • 王亮@精致码农 • 2021.07.09 维基百科对编译器的解释是:编译器是一种程序,它将某种编程语言编写的源代码(原始语言)转换成另一种编程语言(目标语言).编译是从源代码(通 ...
- dio框架访问云函数参数传递问题(以腾讯云中的云函数为例子)第一部
dd云函数其实比较普及,这里以腾讯云的云函数为例,传递参数完成简单的账号注册. 一.第一步先注册腾讯云账号,这里不过多阐述,接着点击 控制台 进入开发者界面.(注意提前进行实名认证) 二.开发者界面如 ...
- Spring Boot从入门到精通(十一)集成Swagger框架,实现自动生成接口文档
Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.Swagger 是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与S ...
- HCNA Routing&Switching之STP基础
前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html:今天我们来讨论下二层环路和STP相 ...
- 模拟input type=file
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...