hibernate之集合映射总结

一、Set集合映射:

Set是一个接口,实现类有HashSetLinkedHashSetTreeSet

特点:加入的对象不能重复,且没有固定的顺序。若重复则跳过。              

   Set set = newHashSet();
   set.add(50);
   set.add(100.0);
   set.add(50);
   set.add(10.0);
   for (Object o : set) {
       System.out.println(o);
    }

1HashSet

特点:内部使用Hash算法保存对象,存取速度快。

2. LinkedHashSet

特点: HashSet的子类,内部使用链表数据结构保存数据,有固定顺序,即add时的顺序。

3. TreeSet

特点:会排序保存的对象,被保存对象需实现comparable接口。

二、List集合映射

List也是一个接口,实现类有ArrayListLinkedList

特点:对象可以重复,记录添加的先后顺序。(需要在数据库中加个字段来保存该值)

1.ArrayList

特点:内部使用数组来实现集合功能,对于随机读取添加的对象效率好,但是添加,移除时效率较低。

方法:size();get();toArray()将对象转化为对象数组

    List<Integer>list = new ArrayList<Integer>();    
    list.add(50);
    list.add(200);
    list.add(100);
    list.add(20);
    for (Integer i : list) {
     System.out.println(i);
       }

2.LinkedList

特点:内部使用链表的形式保存数据,插入移除对象时效率较高。

方法:addFirst();addLast(); getFirst(); getLast(); removeFirst(); removeLast()

    LinkedList<String>list = new LinkedList<String>();    
    list.add("张三);
    list.addFirst("李四");
    list.removeFirst();
    list.addLast("赵五");

三:Bag集合映射

Hibernate中可以映射的集合类型,jdk中未提供。

特点:对象可以重复,不记录添加的先后顺序。修改时先删除所有的记录,在添加修改的记录。更新效率较低。

四:IdBag映射

特点:Bag集合映射的扩展,为每个对象指定id,可直接更新数据,提高了效率。

五:Map

Map对象保存key/value形式的一组对象,都是object类型,一一对应,key不重复。

实现类有:HashMapLinkedHashMapTreeMap

    Map<String, String> users= new HashMap<String,String>();    
    users.put("姓名","张三");
    users.put("电话","888888");
    users.put("住址","山东省");
    Set<String>keys = users.keySet();//获取所有的key值集合
    for(String key : keys) {
    System.out.println(key+ "---->" + users.get(key));
     }

1. HashMap

特点:是基于哈希表的MAP接口的实现,允许null作为keyvalue值,不记录顺序,不保证线程安全,查找效率较高。

方法:put();keySet();()获取所有的key值集合。

2. LinkedHashMap

特点:HashMap的子类,内部使用链表的形式保存数据,有固定的顺序。

3. TreeMap

特点:实现了MapSortedMap接口,内部使用红黑树算法来排序,还可以自定义方法。(加入的是String对象,默认依key值字典顺序排序)

方法:firstKey(); lastKey(); headMap(); tailMap();

 

注:本文参考《Hibernate开发与实战》 刘伟 张利国 电子工业出版社 一书

你可能感兴趣的:(hibernate;集合;映射)