目录
----------------------------------------------------------实际操作---------------------------------------------------
1.map集合的特点及遍历方式
map集合的特点
健值对
遍历
拿到key,在拿值
拿到映射关系,健值都有了
HashMap与hashtable区别
1.hashtable线程是安全的
2.jdk1.8一下的key不能存放null值
table.put("a",1);*/
Map<String,Integer> map=new HashMap<>();
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);
//修改 也是掉用put方法
map.put("c",32);
System.out.println(map);
// 查询
System.out.println(map.get("c"));
// 查询所有
// 1.先拿到map集合中的所有key
Set keySet = map.keySet();
for (Object object : keySet) {
System.out.println("健"+object+"值"+map.get(object));
}
// 2.拿到映射关系
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println("健"+entry.getKey()+"值"+entry.getValue());
}
}
运行结果
{a=1, b=2, c=3, d=4}
2
{a=1, c=32, d=4}
32
健a值1
健c值32
健d值4
健a值1
健c值32
健d值4
---------------------------------------------------------------------------------------------------------------------------------
2.字符串出现的次数
实现思路
1.做字符串切割,得到一个字符数组
2.接下来遍历,拿到单个字符
3.如果单字符没有出现过,即value为null,你那么该字符为key,值初始化为1
4.如果已经出现过,拿到原来的值+1
debugger的使用,调试代码
1.打断点
2.采用debug的方式远行程序
3.进入调试窗口 , 左上方有一个step over调试箭头,快捷键F6
4.接下来可以通过F6一步步调试当前程序对应的每一个变量值
String s="asdasdasgsdagfwqersdsdaewas";
char[] arr = s.toCharArray();
Map<Character, Integer> map=new TreeMap<>();
for (char c : arr) {
Integer value = map.get(c);
if(value==null) {
map.put(c, 1);
}
else {
map.put(c, value+1);
}
}
Set<Entry<Character, Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
运行结果
a:6
d:5
e:2
f:1
g:2
q:1
r:1
s:7
w:2
--------------------------------------------------------------------------------------------------------------------------------
3.泛型
泛型
之前:不健壮的代码,会在运行的时候把错误爆出来;
之后:将潜在的问题暴露出来,早预防澡治疗
将运行期的出现异常转换为编译期错误
public class Demo3 {
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);
for (Object object : set) {
if(Integer.parseInt(object.toString()) % 2==0) {
System.out.println(object);
}
// set.remove(object);
}
}
}
class BookDap{
// add(Book book);
// del(Book book);
// edit(Book book);
// list(Book book);
}
class UserDao extends BaseDao{
// add(Book book);
// del(Book book);
// edit(Book book);
// list(Book book);
}
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.集合与数组所具备的方法是不一样的,如对于数组而言,就没有判断内部包含哪个元素
public class Demo4 {
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());
}
---------------------------------------------------------------------------------------------------------------------------------
4.工具类
对于工具类其他方法的应用
sort
package com.hz.map;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* 对于工具类其他方法的应用
* sort
* tostring
*
* @author Administrator
*
*/
public class Demo5 {
public static void main(String[] args) {
/*List<String> list = new ArrayList<>();
list.add("b");
list.add("c");
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("c", 18));
list.add(new Person("a", 19));
System.out.println(list);
Collections.sort(list,(x,y) -> x.getName().compareTo(y.getName()));
System.out.println(list);
Integer[] arr= {3,6,9,2,5,8};
Arrays.sort(arr,(x,y) -> y-x);
}
}
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
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/*@Override
public int compareTo(Person o) {
return o.getName().compareTo(this.name);
}*/