首页 > 其他 > 详细

集合框架学习总结记录

时间:2015-10-26 02:08:52      阅读:283      评论:0      收藏:0      [点我收藏+]

1.arraylistlinkedList的区别和使用场景

先对比分析各自的优缺点:

Arraylist

优点:因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)

缺点:因为地址连续,所以插入和删除操作效率比较低? ? ? ??

LinkedList

优点:地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,所以非常适合进行插入和删除的操作

缺点:查询操作性能比较低。

应用场景分析:

在需要随机访问的情况下,Arraylist优于LinkedList,因为LinkedList要从一端开始移动指针直到访问的元素位置。在需要增删操作的情况下,LinkedList又明显优于Arraylist,因为Arraylist每一次增删都要移动数据。

?

2.ArrayListVector的区别和使用场景

区别:Arraylist不是线程同步的,Vector是线程同步的。

在多线程中一般采用Vector,在单线程中一般采用ArrayList

?

3.HashSetTreeSet的使用场景

HashSet:在无序的排序时使用。

TreeSet:在需要根据内容的自然顺序进行排序时使用。

?

4.HashMap的使用场景

HashMap是用来存储具有键值对特征的数据,不保证存储顺序,不能重复。

可以用HashMap来做通讯录(用户名=联系号码)的存储,或者按员工号,学号之类的存储数据时使用。

?

5.使用数组,实现一个栈

?

???????? class MyStack<E> {

?????????????????? void push(E e);//压入栈

?????????????????? E pop();//弹出栈

?????????????????? int size();//栈长度

?????????????????? E peek();//查看栈顶数据

???????? }

?

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
 
public class MyStack<E> {
   private ArrayList<E> stackArray ;
   private int top;
   private int buttom;
   private int max;
  
   public MyStack (int max) {
      this.stackArray = new ArrayList<E> (max) ;
      top = -1;
   }
  
   //压入栈
   public void push(E e) {
      stackArray.add(e);
      top ++;
   }
  
   //弹出栈
   public E pop() {
      return stackArray.remove(top--);
     
   }
  
   //栈长度
   public int size() {
      return top+1;
   }
  
   //查看栈顶数据
   public E peek() {
      return  stackArray.remove(top);
     
   }
  
}

?

?

6.查资料,了解Hash算法,能够自定义一个HashSet

一开始感觉自定义一个HashSet应该不难,然后慢慢发现首先还得先自定义一个hashmap,更深入还得定义hashcode的算法,然后发现这是个很艰巨的任务

查了好久的资料,了解了一些基本的概念,比如计算hashcode的算法思想,如何处理地址冲突的问题,原来加入了链表..最后找到了一篇博客,惊奇发现是mzd前辈写的

http://java-mzd.iteye.com/blog/827523

自定义实现了hashmap

?

看完之后感觉收获很大,但是又感慨自己数据结构和算法的不足,因为下午还有课,所以先放置在此,这几天争取理解透彻并能够自己实现。

?

集合框架学习总结记录

原文:http://545283613.iteye.com/blog/2251751

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!