数据结构组数相关

来源:互联网 发布:阿里云服务器受到攻击 编辑:程序博客网 时间:2024/04/20 11:42

1.结构图

Collection                 有序的集合   ├------List                 接口   │         ├LinkedList 链表               (异步, 线程非安全)   │         ├ArrayList    顺序结构动态数组类 (异步, 线程非安全)   │         └Vector        向量(同步, 线程安全)   │           └Stack    栈 (后进先出) └Set                         接口  Map                           接口   ├Hashtable            (同步, 线程安全)   ├HashMap             (异步, 线程非安全)   └WeakHashMap
2.

List, 有序,接口,允许有相同元素ArrayList,数组结构,添加删除需要移动它之后的数据,遍历可以用二分,可变大小,允许为nullLinkedList,链表结构,添加删除数据不用移动数据,只能顺序遍历Vector,Set,不包含重复元素,最有有一个null元素HashMap,允许为null,效率高HashTable,底层是哈希表,不可以存null因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMapTreeMap,底层是二叉树,线程不同步,可以用于给map集合中的键进行排序
3.如何遍历Collection中的每一个元素

不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:  Iterator it = collection.iterator(); // 获得一个迭代子     while(it.hasNext()) {         Object obj = it.next(); // 得到下一个元素     }  

4.对list进行排序

    /**          * 对list进行排序          * @param list          * @param by 排序项          * @param d 0、升序;1、降序          * @return          */          public static List<HashMap<String, Object>> orderList(                  List<HashMap<String, Object>> list, String by, int d) {              DefineComparator comparator = new DefineComparator(by, d);              Collections.sort(list, comparator);              return list;          }  
    public class DefineComparator implements Comparator<HashMap<String, Object>> {                private String order;          private int direction;//0、升序,1、降序                    public DefineComparator(String string, int dir) {              super();              // TODO Auto-generated constructor stub              order = string;              direction = dir;          }                @Override          public int compare(HashMap<String, Object> lhs, HashMap<String, Object> rhs) {              // TODO Auto-generated method stub              double one = Double.valueOf(lhs.get(order).toString());              double two = Double.valueOf(rhs.get(order).toString());              if(direction == 0){                  if(one > two) return 1;                  if(one < two) return -1;              }else if(direction==1){                  if(one > two) return -1;                  if(one < two) return 1;              }              return 0;          }                    public void setDir(int dir){              direction = dir;          }      }  

5.keySet和entrySet

// 第一种取出方式keySet        Set<Student> keySet = hm.keySet();        Iterator<Student> iterator = keySet.iterator();        while (iterator.hasNext()) {            Student student = iterator.next();            String addr = hm.get(student);            System.out.println(student + ":" + addr);        }//第二种取出方式 entrySet        Set<Entry<Student, String>> entrySet = hm.entrySet();        Iterator<Entry<Student, String>> iterator2 = entrySet.iterator();        while (iterator2.hasNext()) {            Entry<Student, String> next = iterator2.next();            System.out.println(next.getKey()+":"+next.getValue());        }文章 http://blog.csdn.net/qq_26787115/article/details/51762397     Map,keySet,entrySet 






0 0