java的基本知识的第三天

这里说的是字典:用于生成键和值对应的结构,就是字典

 

这里说的是:如何去获得键值对里面的键以及里面的键以及值

 

 1.Map的内部,key的比较是通过equals方法来实现的

2.如果说key是ziji

3.Map的话,是用空间换时间  map的key的比较,是通过覆盖equals方法

 hashcode之类的原理,自己还没看,不知道什么意思

 这里的话说的是: key的话  如果是普通的key 那么的话是计算hashcode 判断hashcode是不是相等,再去取出相应的东西

但是的话enum类型的,就是说如果你的key就那么几个,那么就可以用enumMap  来减少计算的这个速度,并且不浪费空间

这里的话仍然是用map类型的来弄,但是用hashMap的来实例化

 这里的话,说的是:如果你的key需要有序进行排序,那么就用TreeMap或者说SortedMap 

TreeMap是实现了Sortedmap的

public class Main {
public static void main(String[] args) {
Map<Person, Integer> map = new TreeMap<>(new Comparator<Person>() { //这里说的是实现接口?就是直接放入key的时候,去实现compare
//也就是说 key是放入的,也就是说person作为key。
//然而。comparator可以直接在new时去实现接口
public int compare(Person p1, Person p2) { //String的话,有个compareTo,就是比较两个字段之间的相等与否
return p1.name.compareTo(p2.name);
}
});
map.put(new Person("Tom"), 1);
map.put(new Person("Bob"), 2);
map.put(new Person("Lily"), 3);
for (Person key : map.keySet()) {//keySet可以获得其中的key
System.out.println(key);
}
// {Person: Bob}, {Person: Lily}, {Person: Tom}
System.out.println(map.get(new Person("Bob"))); // 2
}
}

class Person {
public String name;
Person(String name) {
this.name = name;
}
public String toString() {
return "{Person: " + name + "}";
}
}

 这里的重点是:  你放入sortedmap里面的话,key一定要是能够排序的东西

key是排好序之后的才可以,就是说可以compare的东西才能放入作为key

 

 这里想说的是:1.定义相等逻辑时,是通过这个Compare函数

2.如果说相等的时候,要返回的是0

3.如果说需要一个对应一个的结构,并且说需要有大小的排序的话,那么就是sortedmap

 这个说的是去properties  作为配置文件  但是我都没怎么用properties之类的

 这里说的就是set,set的意思是说  里面的元素不允许重复,那么就叫做set, 其中,set的话就是add,remove ,contains 几个函数

public class Main
{
public static void main(String []args)
{
Set<String> s=new HashSet<>();
s.add("xiexuchen");//这个map的话是put
s.add("wangzhixian");
s.remove("hello");
System.out.println(s.size()); //size()函数,说的是这个set的大小
for(String s1:s)//直接就遍历s,就可以得到所有的元素了。

{
System.out.println(s1);
}
}

}

如果说是Treeset的话,那么就是 set里面的元素是有序的

因为的话,你需要去排序,那么必须要实现Comparator这个接口

 

 这里的话,意思是:Set必须正确的 覆写equals函数以及hashcode函数

那么这里的话,为什么把set里面的equals和hashCode函数都写了之后,还是不行呢?

 这里意思是:Queue是一种先进先出的队列结构

这里的意思是说,队列里面去删除、增加元素的话,对于满了的操作,是抛出异常?还是不管,那么就是不同的函数来的。

poll取出的是队首元素,peek是看到队首元素,但是并不去处理这个元素,

 

这里的话,大概懂一点,说这个就是priorityqueue的含义吧,就是说一定要定义如何去比较

而你如果放入的元素,已经是定义过如何去比较的话,那么就不用管

意思是说:priorQueue是实现排序的,是先进先出,queue就是队列 谁先进就谁先出

 

deque说的是什么,deque说的是:两头进,两头都可以出的结构  就是deque

然后的话

 这里说的是queue去用priority queue来进行实例化

自己去看这个deque是怎么取出、怎么拿进去的话,那么就是想象链表的过程

 peekFirst是获得这个元素 但是不弹出

这里的意思是说,stack是可以通过deque去模拟的

然后的话addFirst、removeFirst  、peekFirst都是里面的

 

计算中缀表达式、先进后出的结构 就是栈

不用知道它的迭代器,不用得到迭代器之类的

直接去String s:即可

set和list的转换,就是用创建法,创建 new ArrayList<>()

就是说构造函数的时候,直接把set放到里面去

 

目前还不知道这个的问题是在哪里,不太理解。

但是就是说  如果说你这个类的模板里面也需要有模板,那么你就引入模板,如果你继承的话,但是你不需要模板了,那就不写模板T

 

 Collections这个工具类里面,有着很多算法,包括shuffle算法等等

? extends T  意思是说,就是说T以及T的子类

List.of生成的list  是不能够被改变的,而是:不断的add的 才是能改变的

猜你喜欢

转载自www.cnblogs.com/startFrom0/p/12505476.html