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);
    }

     

posted @ 2018-05-10 21:26  ^TP^  阅读(437)  评论(2编辑  收藏  举报