//队列add,poll,isEmty-------栈poll,push,empty—priorityQueue,ArrayDeque
如果只是用到队列的先进先出,那用列表就可以了。二叉树的遍历要用栈,而不能用队列
Queue,Stack
public static void main(String args[]){
/**
* 双端队列
*/
// Deque<Integer>deque=new LinkedList<>();
/**
* ArrayDeque是先进先出的。 输入[2,1,5,4],则输出[2,1,4,5]
*/
//Queue<Integer>queue=new ArrayDeque<>();
/**
* ArrayDeque是按照优先级出队的(默认是升序出队)。输入[2,1,5,4],则输出[1,2,4,5]
*/
Queue<Integer>queue=new PriorityQueue<>();
queue.add(2);
queue.add(1);
queue.add(5);
queue.add(4);
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
/**
* 栈:先进后出,输入[2,1,5,4],则输出[4,5,1,2]
*/
Stack<Integer> stack=new Stack<>();
stack.add(2);
stack.add(1);
stack.add(5);
stack.add(4);
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
数组
数组既可以实现先进先出,也可以实现后进先出。关键是看你如何遍历
String
反转字符串的几种方法:
//方法1
public String reverse(String str){
StringBuffer sb=new StringBuffer(str);
return sb.reverse().toString();
}
//方法2
public String reverse(String str){
String result="";
for(int i=str.length()-1;i>=0;i--){
result+=str.charAt(i);
}
return result;
}
Map
Map.Entry【本意:入口即map的入口】的作用。Map.Entry是为了更方便的输出map键值对。一般情况下,要输出Map中的key 和 value 是先得到key的集合keySet(),然后再迭代(循环)由每个key得到每个value。values()方法是获取集合中的所有值,不包含键,没有对应关系。而key/value的集合Entry(里面有getKey/getValue)可以一次性获得这两个值。(通常用法)
Map<Integer,Integer>map=new HashMap<>();
map.put(1,2);
map.put(2,3);
Iterator iterator= map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry= (Map.Entry) iterator.next();
System.out.println(entry.getValue());
System.out.println(entry.getKey());
}
}
TreeMap
-
常用函数
-
K ceilingKey(K key) 返回大于等于(>=)给定键的最小键(比键大一点的&&&向上取整);如果不存在这样的键,则返回 null。
K floorKey(K key) 返回小于等于(<=)给定键的最大键(比键小一点的&&&&向下取整);如果不存在这样的键,则返回 null。【比如keyset里面是(1,2,4,6)则floorKey(5)返回结果是4】
K higherKey(K key) 返回严格大于(>)给定键的最小键;如果不存在这样的键,则返回 null。
K ==lowerKey(K key) ==返回严格小于(<)给定键的最大键;如果不存在这样的键,则返回 null。 -
list+stream+treemap的使用
//测试
public static void main(String[] args) {
Map<String,Integer> map = Maps.newTreeMap();
map.put("sssss",-111111111);
map.put("ss",-111111111);
map.put("yy",0);
map.put("lx",5);
map.put("fyx",2);
map.put("ztt",3);
map.put("zzy",10);
List<Map.Entry<String,Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list,((o1, o2) -> o2.getValue().compareTo(o1.getValue())));
System.out.println(list.get(list.size()-1).getValue());
System.out.println(list.get(list.size()-1).getKey())
}
- treemap降序排列
public static void main(String args[]){
/**
* 默认是自然排序【即升序排序】
* 现在使用降序排序
*/
TreeMap<Integer,Integer>treeMap=new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
treeMap.put(2,2);
treeMap.put(1,1);
treeMap.put(3,3);
for(Map.Entry entry:treeMap.entrySet()){
System.out.println("使用Map.Entry遍历TreeMap:v/k如下:"+entry.getValue()+"&&"+entry.getKey());
}
}