• 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);
      }
  • 相关阅读:
    原创:【微信小程序】发送消息模板教程(后台以PHP示例)
    【微信小程序】详解wx:if elif else的用法(搭配view、block)
    原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能
    微信小程序的POST和GET请求方式的header区别
    什么是单例模式
    Spring bean的生命周期
    对Spring Bean了解一二
    匿名内部类了解一二
    Eclipse中如何查看使用的JDK版本
    什么是语法糖
  • 原文地址:https://www.cnblogs.com/ustctp/p/9021833.html
Copyright © 2020-2023  润新知