SUMMARY | JAVA中的数据结构
Posted ustctp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SUMMARY | JAVA中的数据结构相关的知识,希望对你有一定的参考价值。
String
- String类是不可修改的,创建需要修改的字符串需要使用StringBuffer(线程同步,安全性更高)或者StringBuilder(线程非同步,速度更快)。
- 可以用“+”连接String。
- 用String.format()创建格式化字符串。
ArrayList
- 动态数组,可以动态的增加或者减少元素。
- 常用操作:
- 创建:ArrayList<Type> arrayList=new ArrayList<>();
- 添加元素:add
- 获取元素:get
- 删除元素:remove
- 获取数组大小:size
- 判断是否包含某一元素:contains
- 设置元素:set
- 清空数组:clear
- 判断是否为空:isEmpty
- 遍历方式:通过下标索引效率最高
-
Type temp; for(int i=0;i<arrayList.size();i++){ temp=arrayList.get(i); }
- arrayList排序需要实现Comparator接口以实现自定义排序
-
Comparator<String> comparator=new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2)>0) return 1; if(o1.compareTo(o2)<0) return -1; return 0; } };
Stack
- 由vector拓展而来
- 常用操作:push,peak,pop,search,isEmpty
-
public static void stackTest() { Stack<String> stack=new Stack<String>(); //将元素压入栈顶 System.out.println(stack.push("haha")); System.out.println(stack.push("yes")); //栈顶元素的search结果为1,然后从栈顶向栈底依次递增 System.out.println(stack.search("haha")); //查看栈顶元素 System.out.println(stack.peek()); //弹出栈顶元素并返回栈顶元素 System.out.println(stack.pop()); //判断栈是否非空 System.out.println(stack.isEmpty()); }
Queue
- 是一个接口,LinkedList实现Queue接口
- 常用操作:offer,peek,poll,isEmpty
-
public static void queueTest() { //LinkedList实现了Queue接口,所以构造时使用LinKedList Queue<String> queue=new LinkedList<String>(); //在队列尾部增加元素,并返回是否增加成功 System.out.println(queue.offer("abc")); System.out.println(queue.offer("def")); //返回队首元素,若队列空,则返回null;(ps:element在队列空时抛出异常) System.out.println(queue.peek()); //弹出队首元素,并返回队首元素,若队列空则返回null System.out.println(queue.poll()); //判断队列是否空 System.out.println(queue.isEmpty()); }
LinkedList
- 双向链表,非同步
- 常用操作:addFirst,addLast,add,getFirst,getLast,get,removeFirst,removeLast,remove,isEmpty
public static void linkedlistTest() { LinkedList<String> linkedList=new LinkedList<String>(); //在链表头部加,尾部加,任意位置加元素 linkedList.addFirst("haha"); linkedList.addLast("yali"); linkedList.add(1, "good"); //输出链表 System.out.println("first element:"+linkedList.getFirst()); System.out.println("last element:"+linkedList.getLast()); for(int i=0;i<linkedList.size();i++) System.out.println(linkedList.get(i)); //删除任意位置,头部,尾部的链表元素 linkedList.remove(1); linkedList.removeFirst(); linkedList.removeLast(); //判断链表是否空 System.out.println(linkedList.isEmpty()); }
HashMap
- 非同步
-
public static void hashmapTest() { HashMap<String, Integer> hashMap=new HashMap<String, Integer>(); //向哈希表中添加元素 hashMap.put("tp", 123); hashMap.put("zp", 567); System.out.println(hashMap); //通过迭代器便利哈希表 for(Iterator<Entry<String, Integer>> iterator=hashMap.entrySet().iterator();iterator.hasNext();){ Entry<String, Integer> entry=iterator.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); } //查找哈希表中是否有该键 System.out.println(hashMap.containsKey("he")); //查找哈希表是否有该值 System.out.println(hashMap.containsValue(567)); //删除哈希表中的键值对 hashMap.remove("tp"); System.out.println(hashMap); }
以上是关于SUMMARY | JAVA中的数据结构的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase 获取数据到 Recyclerview 中的片段?