首页 > 编程语言 >【基础知识】——java集合

【基础知识】——java集合

时间:2022-12-05 17:03:27浏览次数:44  
标签:map java list put System 基础知识 println 集合 out


一、背景

最近在刷力扣算法题的过程中对于java集合的定义及使用想要达到更加精准的程度,于是有了本次的总结

二、目标

宏观总结:绘制java集合类图
微观:写每个集合常用的代码实现
收获:写当前的总结
通过以上三方面的目标,以达到实现力扣题的过程中所有集合可以手写出来,并且每个集合常用的方法可以了解;

三、过程

1.百度搜索java相关集合说明,绘制初步类图,并在jdk中去查看类间关系(java.bese.java.util包下)以完善类图

【基础知识】——java集合_类图


2.根据绘制的类图,代码实现例如:

2.1.List:arrayList、linkedList、vector

package algorithm.b01Collection;

import java.util.*;

public class a01List {
public static void main(String[] args) {
System.out.println("arrayList测试:");
arrayList();
System.out.println("linkedList测试:");
linkedList();
System.out.println("vector测试:");
vector();
}

public static void arrayList(){
ArrayList list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("1");
list.add("2");
list.add("2");
System.out.println(Arrays.asList(list));
list.remove("b");
System.out.println(Arrays.asList(list));
list.add("b");
System.out.println(Arrays.asList(list));

}

public static void linkedList(){
LinkedList list = new LinkedList();
list.add(4);
list.add(2);
list.add(3);
list.add(1);
list.add(9);
list.add(9);
System.out.println(Arrays.asList(list));
//int类型就换成下标删除了
list.remove(2);
System.out.println(Arrays.asList(list));
list.add(1);
System.out.println(Arrays.asList(list));
}

public static void vector(){
Vector list = new Vector();
list.add(4);
list.add(2);
list.add(3);
list.add(1);
list.add(9);
list.add(9);
System.out.println(Arrays.asList(list));
//int类型就换成下标删除了
list.remove(2);
System.out.println(Arrays.asList(list));
list.add(1);
System.out.println(Arrays.asList(list));
}
}

2.2.Set:hashSet、treeSet

package algorithm.b01Collection;

import java.util.*;

public class a02Set {
public static void main(String[] args) {
System.out.println("hashSet 测试:");
hashSet();
System.out.println("treeSet 测试:");
treeSet();
}

public static void hashSet(){
HashSet set = new HashSet();
set.add("a");
set.add("a");
set.add("b");
set.add("b");
set.add("c");
System.out.println(Arrays.asList(set));
set.remove("b");
System.out.println(Arrays.asList(set));
set.add("b");
System.out.println(Arrays.asList(set));

}

public static void treeSet(){
TreeSet set = new TreeSet();
set.add("a");
set.add("a");
set.add("b");
set.add("b");
set.add("c");
System.out.println(Arrays.asList(set));
set.remove("b");
System.out.println(Arrays.asList(set));
set.add("b");
System.out.println(Arrays.asList(set));

}

}

2.3.QueueStack:queue、stack

package algorithm.b01Collection;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class a03QueueStack {
public static void main(String[] args) {
System.out.println("测试queue");
queue();
System.out.println("测试stack");
stack();

}

public static void queue(){
Queue<String> queue = new LinkedList<>();
queue.offer("b");
queue.offer("a");
queue.offer("d");
queue.offer("c");
queue.offer("e");
queue.offer("f");
System.out.println(queue);
System.out.println("poll="+queue.poll());
System.out.println(queue);
System.out.println("element="+queue.element());
System.out.println(queue);
System.out.println("peek="+queue.peek());
System.out.println(queue);
System.out.println("remove="+queue.remove());
System.out.println(queue);

}

public static void stack(){
Stack<String> stack = new Stack<>();
stack.push("1");
stack.push("2");
stack.push("3");
stack.push("4");
System.out.println(stack);
System.out.println(stack.peek());
System.out.println(stack);
System.out.println(stack.pop());
System.out.println(stack);
System.out.println(stack.empty());
System.out.println(stack.search("3"));
System.out.println(stack);

}
}

2.4.Map:hashMap、treeMap、linkedHashMap、weakHashMap

package algorithm.b01Collection;

import java.util.*;

public class a04Map {
public static void main(String[] args) {
System.out.println("测试 hashMap");
hashMap();
System.out.println("测试 treeMap");
treeMap();
System.out.println("测试 linkedHashMap");
linkedHashMap();
System.out.println("测试 weakHashMap");
weakHashMap();
//hashcode值相同的两个字符串
// String a = "/2010/6/13/19/766105207591607338053525248042284292/1.0";
//
// String b = "/2010/10/8/19/766105208164534487403083462088868610/1.0";
//
// System.out.println(a.hashCode());
//
// System.out.println(b.hashCode());
}

public static void hashMap(){
Map<String,Object> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put(null,4);
map.put(null,5);
map.put("/2010/10/8/19/766105208164534487403083462088868610/1.0",5);
map.put("/2010/6/13/19/766105207591607338053525248042284292/1.0",9);
System.out.println(map);
System.out.println(map.containsKey("a"));
System.out.println(map.containsValue(1));
//remove还存在输入key和value进行移除的事情呢?
map.remove("a",1);
map.remove("/2010/6/13/19/766105207591607338053525248042284292/1.0");
System.out.println(map);

}

public static void treeMap(){
Map<String,Object> map = new TreeMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put("d",5);
map.put("d",6);
// map.put(null,4);
// map.put(null,5);
map.put("/2010/10/8/19/766105208164534487403083462088868610/1.0",5);
map.put("/2010/6/13/19/766105207591607338053525248042284292/1.0",9);
System.out.println(map);
System.out.println(map.containsKey("a"));
System.out.println(map.containsValue(1));
//remove还存在输入key和value进行移除的事情呢?
map.remove("a",1);
map.remove("/2010/6/13/19/766105207591607338053525248042284292/1.0");
System.out.println(map);

}

public static void linkedHashMap(){
Map<String,Object> map = new LinkedHashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put("d",5);
map.put("d",6);
// map.put(null,4);
// map.put(null,5);
map.put("/2010/10/8/19/766105208164534487403083462088868610/1.0",5);
map.put("/2010/6/13/19/766105207591607338053525248042284292/1.0",9);
System.out.println(map);
System.out.println(map.containsKey("a"));
System.out.println(map.containsValue(1));
//remove还存在输入key和value进行移除的事情呢?
map.remove("a",1);
map.remove("/2010/6/13/19/766105207591607338053525248042284292/1.0");
System.out.println(map);

}

public static void weakHashMap(){
Map<String,Object> map = new WeakHashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
map.put("d",5);
map.put("d",6);
map.put(null,4);
map.put(null,5);
map.put("/2010/10/8/19/766105208164534487403083462088868610/1.0",5);
map.put("/2010/6/13/19/766105207591607338053525248042284292/1.0",9);
System.out.println(map);
System.out.println(map.containsKey("a"));
System.out.println(map.containsValue(1));
//remove还存在输入key和value进行移除的事情呢?
map.remove("a",1);
map.remove("/2010/6/13/19/766105207591607338053525248042284292/1.0");
System.out.println(map);

}

}

2.5.LinkedList(单双向链表):singleLinked、doubleLinked

package algorithm.b01Collection;

import lombok.Data;

public class a05LinkedList {
public static void main(String[] args) {
System.out.println("singleLinked 测试");
singleLinked();
System.out.println("doubleLinked 测试");
doubleLinked();
}

@Data
static class Node{
private int num;
private Node next;
private Node prx;
public Node(int num){
this.num = num;
}
public Node(){}
}

public static void singleLinked(){
Node node = new Node();
node.num = 1;
node.next = new Node(2);
node.next.next = new Node(3);
node.next.next.next = new Node(4);
while (node != null){
System.out.println(node.num);
node = node.next;
}
}

public static void doubleLinked(){
Node node = new Node();
node.num = 1;
node.prx = null;
node.next = new Node(2);
node.next.prx = node;
node.next.next = new Node(3);
node.next.next.prx = node.next;
node.next.next.next = new Node(4);
node.next.next.next.prx = node.next.next;
while (node != null){
if(node.prx != null){
System.out.println("上一个节点的值:"+node.prx.num);
}else {
System.out.println("上一个节点为null");
}
System.out.println("当前节点的值:"+node.num);
node = node.next;
}
}

}

四、总结扩展

1.有了本次的总结学习目前为止达到了上面的目标
2.针对于不同数据结构的底层原理和源码分析将会在刷一段时间的力扣题(100题)之后再做总结


标签:map,java,list,put,System,基础知识,println,集合,out
From: https://blog.51cto.com/u_14471711/5913074

相关文章

  • 前端知识之JS(javascirpt)
    目录JS简介JS基础1.注释语法2.引入JS的做种方式3.结束符号变量与常量基本数据类型1.数字类型(Number)2.字符类型(string)3.布尔类型(Boolean)4.null和underfined5.对象(obj......
  • java通过poi导出excel和pdf
    【背景】  由于各户的需求,所以需要增加导出excel这个功能,其实大部分系统都需要这个导出功能的,所以这里也就不详细说明具体导出的背景了O(∩_∩)O~  干完导出exce......
  • java并发数据结构之CopyOnWriteArrayList
    CopyOnWriteArrayList是一个线程安全的List实现,其在对对象进行读操作时,由于对象没有发生改变,因此不需要加锁,反之在对象进行增删等修改操作时,它会先复制一个对象副本,然后对......
  • jdk自带的javaVisualVM检测tomcat
    背景:在项目运行的过程中想了解一下tomcat的执行性能情况,下面以jdk自带的javaVisualVm为例进行配置检测1.在我本地(windows系统)找到jdk中的bin目录,找到jvisualvm.exe双击......
  • javaScript概述
    目录JS简介JS基础变量与常量基本数据类型运算符流程控制函数内置对象JS简介全称JavaScript但是与Java一毛钱关系都没有之所以这么叫是为了蹭Java的热度它是一门前端工......
  • Java 编程入门第一课:HelloWorld
    在之前的文章中,壹哥带大家搭建出了Java的开发环境,配置了JDK环境变量,并且我们也熟悉了dos命令行的操作。那么从这篇文章开始,壹哥就开始带各位真正地学习Java代码该......
  • 力扣1337(java&python)-矩阵中战斗力最弱的 K 行(简单)
    题目:给你一个大小为 m *n 的矩阵 mat,矩阵由若干军人和平民组成,分别用1和0表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行......
  • JavaDoc生成文档
    JavaDoc生成文档一.通过命令行生成JavaDoc文档1.打开指定的文件目录选中指定文件(类或者包)--->右键选中openin---->explorer2.打开指定文件的cmd再1中打开的文......
  • JavaScript深浅拷贝
    基本类型&引用类型ECMAScript中的数据类型可分为两种:基本类型:undefined,null,Boolean,String,Number,Symbol引用类型:Object,Array,Date,Function,RegExp等不同类......
  • java面试
    目录枚举泛型用反射动态给对象的某个属性赋值导包带*有什么影响idea如何取消自动导包为*BIO和NIO和AIO枚举点击查看代码packagecom.cdjdgm.pdms.enums;/***供电......