list map等

来源:互联网 发布:基金从业考试题型 知乎 编辑:程序博客网 时间:2024/05/23 18:31
List Map区别


Collection 是对象集合, Collection 有两个子接口 List  Set
List 可以通过下标 (1,2..) 来取得值,值可以重复
 Set 只能通过游标来取值,并且值是不能重复的
ArrayList  Vector  LinkedList  List 的实现类
ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的
LinkedList 是线程不安全的,底层是由链表实现的   
Map 是键值对集合
HashTable  HashMap  Map 的实现类   
HashTable 是线程安全的,不能存储 null    
HashMap 不是线程安全的,可以存储 null   

Collection接口中有两个常用的子接口:List(列表),Set(集)。
List:可存放重复元素,元素存取是有序的。
                 ArrayList:底层为数组结构。查询速度快。增删稍慢。线程不同步。
                 LinkedList:底层为链表结构。增删速度快,查询稍慢。线程不同步
                 Vector:底层为数组结构。线程同步。被ArrayList替代了。因为效率低。

Set:不可以存放重复元素,元素存取是无序的
                HashSet:数据结构是哈希表。线程不同步。hashCode和equals
                TreeSet:可以对Set集合中的元素进行排序,数据结构为二叉树
                                实现Comparable接口,覆盖compareTo(Object obj)方法
                                实现Comparator接口,覆盖compare(Object o1,Object o2)方法
Map:存储键值对,键不可以重复,值可以重复。
                取出map集合元素的两种方式方法keySet()和entrySet()
                Hashtable: 数据结构为哈希表,不可以存入null键null值,线程同步。
                HashMap:数据结构为哈希表,允许使用 null 值和 null 键,线程不同步。
                TreeMap:数据结构为二叉树。线程不同步。
                                用于给map集合中的键进行排序(排序方法和TreeSet一样,实现comparable和comparator两个接口即可)。
注:其实Set底层就是使用了Map集合
 entryset遍历hashmap
Mapmap =new HashMap();
       
map.put("姓名","alexander");
       
map.put("年龄","14");
       
map.put("性别","男");
        System.
out.println(map);
        Iterator
it =map.entrySet().iterator();
       
while(it.hasNext()){
        Map.Entry
entry = (Entry) it.next();
        Object
key =entry.getKey();
        Object
value = entry.getValue();
        System.out.println(key+":::"+value);

因为hashmap无序,用迭代器迭代遍历
keyset entryset keyset只遍历key键集 entryset通过map.entry(映射关系)遍历键值对。



Collection          接口的接口   对象的集合 
 List                   子接口      按进入先后有序保存   可重复 
│├ LinkedList                接口实现类   链表   插入删除   没有同步   线程不安全 
│├ ArrayList                  接口实现类   数组   随机访问   没有同步   线程不安全 
│└ Vector                      接口实现类   数组                  同步        线程安全 
    Stack
 Set                   子接口       仅接收一次,并做内部排序

 HashSet


    LinkedHashSet
 TreeSet
 public static void method_2(Map<Integer,String> map){         //第一个返回null,存进去的都是返回前一个         map.put(8,"zhaoliu");//返回Null         map.put(2,"zhaoliu");//返回zhaoliu         map.put(7,"xiaoqiang");//返回zhaoliu         map.put(6,"wangcai");//返回wangcai         System.out.println("*********");         System.out.println(map.put(5,"wangcai5"));         System.out.println(map.put(5,"wangcai5"));         System.out.println(map);         System.out.println("*********");         //Collection!!!1         Collection<String> values = map.values();         Iterator<String> it2 = values.iterator();         while(it2.hasNext()){             //遍历拿到的是Vaule!!!             System.out.println("1111111111111:" + it2.next());         }         /*          * 通过Map转成set就可以迭代。          * 找到了另一个方法。entrySet。          * 该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry类型(结婚证)          *          * 允许重复          */         //Set<Map.Entry<Integer, String>>!!!2         Set<Map.Entry<Integer, String>> entrySet = map.entrySet();         Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();         while(it.hasNext()){             //遍历拿到的是关系!!!             Map.Entry<Integer, String> me = it.next();             Integer key = me.getKey();             String value = me.getValue();             System.out.println(key+"::2222222222::"+value);         }         //取出map中的所有元素。         //原理,通过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,         //在对每一个键通过map集合的get方法获取其对应的值即可。         //Set<Integer> keySet!!!3         Set<Integer> keySet = map.keySet();         Iterator<Integer> it21 = keySet.iterator();         while(it21.hasNext()){             //遍历拿到的是Key!!!             Integer key = it21.next();             String value = map.get(key);             System.out.println(key+":3333333333:"+value);         }     }     public static void method(Map<Integer,String> map){//学号和姓名         // 添加元素。         System.out.println(map.put(8, "wangcai"));//null         System.out.println(map.put(8, "xiaoqiang"));//wangcai 存相同键,值会覆盖。         map.put(2,"zhangsan");         map.put(7,"zhaoliu");         //删除。 //      System.out.println("remove:"+map.remove(2));         //判断。 //      System.out.println("containskey:"+map.containsKey(7));         //获取。         System.out.println("get:"+map.get(6));         System.out.println(map);         Outer.Inner.show();     } }


原创粉丝点击