list map和set的介绍

Collection——————接口
├List————————接口
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set————————接口
Map—————————接口
├Hashtable
├HashMap
└WeakHashMap

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。collection接口又分为list和set接口

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

List
List: 有顺序的,元素可以重复
遍历:for 迭代
排序:Comparable Comparator Collections.sort()
ArrayList:底层用数组实现的List
特点:查询效率高,增删效率低 轻量级 线程不安全

ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

LinkedList底层用双向循环链表 实现的List
特点:查询效率低,增删效率高
Vector: 底层用数组实现List接口的另一个类
特点:重量级,占据更多的系统开销 线程安全

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

SET

Set:无顺序的,元素不可重复(值不相同)
遍历:迭代
排序:SortedSet
HashSet:采用哈希算法来实现Set接口
唯一性保证:重复对象equals方法返回为true
重复对象hashCode方法返回相同的整数
不同对象 哈希码 尽量保证不同(提高效率)
TreeSet:在元素添加的同时,进行排序。也要给出排序规则
唯一性保证:根据排序规则,compareTo方法返回为0,就可以认定两个对象中有一个是重复对象。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Map:元素是键值对 key:唯一,不可重复 value:可重复
遍历:先迭代遍历key的集合,再根据key得到value
HashMap:轻量级 线程不安全 允许key或者value是null

集合的遍历:

List<String>    list    =    new    ArrayList<String>();   
   list.add("testone");   
   list.add(“testtwo”); 
   第一种:   
   for(Iterator<String>  it   = list.iterator();it.hasNext();){   
       ....   
   }   
   这种方式在循环执行过程中会进行数据锁定,性能稍差,同时,如果你想在寻欢过程中去掉某个元素,只能调用   

   it.remove方法,不能使用list.remove方法,    否则一定出现并发访问的错误.   
   第二种:   
   for(String data :list){   
       .....   
   }   
   内部调用第一种,换汤不换药,因此比Iterator慢,这种循环方式还有其他限制, 不建议使用它。
    
   第三种:   
   for(int  i=0;i<list.size();i++){   
       A  a  =    list.get(i);   
       ...   
   }   
   内部不锁定,效率最高,但是当写多线程时要考虑并发操作的问题。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Map<String,String> map=new HashMap<String,String>();   
map.put("username", "qq");   
map.put("passWord", "123");  
 
第一种用for循环
for(Map.Entry<String, String> entry:map.entrySet()){   
     System.out.println(entry.getKey()+"--->"+entry.getValue());   
}   
第二种用迭代 
Set set = map.entrySet();        
Iterator i = set.iterator();        
while(i.hasNext()){     
     Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next();   
     System.out.println(entry1.getKey()+"=="+entry1.getValue());   
}   
用keySet()迭代 
Iterator it=map.keySet().iterator();   
while(it.hasNext()){   
     String key;   
     String value;   
     key=it.next().toString();   
     value=map.get(key);   
     System.out.println(key+"--"+value);   
}   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Set类型遍历

1.迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
  String str = it.next();
  System.out.println(str);
}

2.for循环遍历:
for (String str : set) {
      System.out.println(str);
}
***********************************************
优点还体现在泛型 假如 set中存放的是Object
Set<Object> set = new HashSet<Object>();
for循环遍历:
for (Object obj: set) {
      if(obj instanceof Integer){
                int aa= (Integer)obj;
             }else if(obj instanceof String){
               String aa = (String)obj
             }
              ........

注意:Map的遍历是把map转为set再进行遍历,map.entyset()。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值