目录
一、map集合的特点
1.1 map集合的基本使用方式
map集合的使用包括增删改查
下面展示 map集合的增删改查代码
。
package com.Yzp.map;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* map集合的特点
* 键值对
* 遍历:
* 拿到key,再拿值
* 拿到映射关系,键值都有了
*HashMap与hashtable的区别
*1.hashtable 是线程安全的
*2.jdk1.8以下hashtable的key不能存放null
*
* @author 易泽鹏
*
* 2022年6月9日上午11:15:38
*/
public class YzpDemo1 {
public static void main(String[] args) {
Hashtable<String, Integer> table = new Hashtable<>();
// public synchronized v put(K key,V value)
table.put("a", 1);
Map<String, Integer> map = new HashMap<>();
//V put (K key,V value);
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
System.out.println(map);
//删除
Object remove = map.remove("b");
System.out.println(remove);
System.out.println(map);
//修改也是调用put方法
map.put("c", 32);
System.out.println(map);
//查询
System.out.println(map.get("c"));
1.2 map集合的两种遍历方式
map集合两种遍历方式一种是先拿到map集合中的所有key还有一种是
2.拿到映射关系
下面展示 map两种遍历方式代码
。
//1.先拿到map集合中的所有key
Set keys = map.keySet();
for (Object key : keys) {
System.out.println("键:"+key+",值:"+map.get(key));
}
//2.拿到映射关系
Set<Entry<String,Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println("键:"+entry.getKey()+",值:"+entry.getValue());
}
二、字符串切割和 debug的使用
2.1字符串的切割
实现思路:
* 1.做一个字符串切割,得到一个字符数组
* 2.接下里遍历,拿到单个字符
* 3.如果该字符没有出现过,即value值为null,那么该字符为key,值初始化为1
* 4.如果已经出现过,拿到原来的值+1
下面展示一些 内联代码片
。
package com.Yzp.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class YzpDemo2 {
public static void main(String[] args) {
String s = "adfafcsadadasacvvvfr";
/*
* 实现思路:
* 1.做一个字符串切割,得到一个字符数组
* 2.接下里遍历,拿到单个字符
* 3.如果该字符没有出现过,即value值为null,那么该字符为key,值初始化为1
* 4.如果已经出现过,拿到原来的值+1
* debugger的使用:调试代码
* 1.打断点
* 2.采用debug的方式运行程序
* 3.进入调试窗口,左上方有一个step over调试箭头,快捷键F6
* 4.接下来可以通过F6一步步调试当前程序对应的每一个变量值
*
* 案例1:按照字符的出现次数进行排序输出
*/
char[] array = s.toCharArray();
Map<Character, Integer> map = new HashMap<>();
for (char c : array) {
Integer value = map.get(c);
if(value==null) {
map.put(c, 1);
}else {
map.put(c, value+1);
}
// System.out.println(value);
}
Set<Entry<Character,Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}
2.2 debug的使用
debugger的使用:调试代码
* 1.打断点
* 2.采用debug的方式运行程序
* 3.进入调试窗口,左上方有一个step over调试箭头,快捷键F6
* 4.接下来可以通过F6一步步调试当前程序对应的每一个变量值
三、泛型
泛型的作用:可以将将错在的问题暴露出来,早预防早治疗将运行期出现的异常转换为编译期的错误
之前:不健壮的代码,会运行时才会把错误暴露出来
之后:将错在的问题暴露出来,早预防早治疗将运行期出现的异常转换为编译期的错误
下面展示一些 泛型代码
。
package com.Yzp.map;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 泛型
* @author 易泽鹏
* 之前:不健壮的代码,会运行时才会把错误暴露出来
* 之后:将错在的问题暴露出来,早预防早治疗
* 将运行期出现的异常转换为编译期的错误
* 2022年6月9日下午3:25:27
*/
public class YzpDemo3 {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
// set.add("a");
for (Object object : set) {
if(Integer.valueOf(object.toString())%2==0) {
System.out.println(object);
}
// set.remove(object);
}
}
}
class BookDao{
// add(Book book)
// del(book)
// edit(Book book)
// list(Book book)
}
class UserDao extends BaseDao{
}
class BaseDao<T>{
void add(T t) {
}
void del(T t) {
}
void edit(T t) {
}
List<T> list(T t){
return null;
}
}
class Result {
<T> void del(T t) {
}
}
四、集合之间的相互转换:
**理论:1.数组转成集合,本质上依然是一个数组:长度是不可变
2.集合与数组所具备的方法是不一样的,如对于数组而言,就没有判断内部包含哪个元素w
如果强行运行会报:java.lang.UnsupportedOperationException **
下面展示代码
。
package com.Yzp.map;
import java.util.Arrays;
import java.util.List;
/**
* 集合之间的相互转换:
* 1.数组转成集合,本质上依然是一个数组:长度是不可变
* 2.集合与数组所具备的方法是不一样的,如对于数组而言,就没有判断内部包含哪个元素
*
* @author 易泽鹏
*
* 2022年6月9日下午8:10:47
*/
public class YzpDemo4 {
public static void main(String[] args) {
String[] arr = {"a","b","c","d"};
List<String> list = Arrays.asList(arr);
// Object[] array = list.toArray();
// list.add("e");
// java.lang.UnsupportedOperationException
System.out.println(list.size());
}
}
五、对其他工具类方法的使用
Collections:排序和集合转数组:toArray
Arrays里面的tostring和aslist和sort方法的使用*
下面展示代码
。
package com.Yzp.map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.locks.Condition;
/**
* 对于工具类其他方法的应用
* sort
* tostring
* @author 易泽鹏
*
* 2022年6月9日下午8:18:18
*/
public class YzpDemo5 {
public static void main(String[] args) {
// List<String> list = new ArrayList<>();
// list.add("b");
// list.add("c");
// list.add("d");
// list.add("a");
// System.out.println(list);
// Collections.sort(list);
// System.out.println(list);
// //这里面的x,y指的是集合中的元素
// Collections.sort(list, (x,y) -> y.compareTo(x));
// System.out.println(list);
List<Person> list = new ArrayList<>();
list.add(new Person("b猪崽", 16));
list.add(new Person("荣满崽", 1));
list.add(new Person("a文比崽", 18));
list.add(new Person("冠逼崽", 12));
System.out.println(list);
// Collections.sort(list, (x,y) ->x.getAge()-y.getAge());
//实现接口
Collections.sort(list);
System.out.println(list);
Integer[] arr = {12,5,3,6,14,9};
Arrays.sort(arr, (x,y)->y-x);
System.out.println(Arrays.toString(arr));
}
}
class Person implements Comparable<Person>{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
return o.getName().compareTo(this.name);
}
}