list map等

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
Map map = 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();
     }
 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值