ArrList、HashSet、HashMap 的遍历和区别

一、ArrList 的遍历

(1)       

public List<String>  getArrayList(){
    List<String>    list =new ArrayList<String>();
    list.add("1");
    list.add("2");
    list.add("2");
    list.add("3");
    list.add("4");
    list.add("5");
    list.add("6");
    list.add(" ");
return list;}


for (int i = 0, len = list.size(); i < len; i++) {
     String s = list.get(i);
     Log.e("TAG", s.toString());
 }

for(String s :list){
    Log.e("TAG", s.toString());
}

Iterator<String> iterator =list.iterator();
 while (iterator.hasNext()){
     String s = iterator.next();
     Log.e("TAG", s.toString());
 }

打印结果:

02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 1
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 2
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 2
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 3
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 4
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 5
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG: 6
02-08 10:34:19.549 17555-17555/com.testopensourceapplication.citydemo E/TAG:  

  

特性:ArrayList  可以重复 和可以为空       

           如果需要删除的时候,只能使用Iterator



二、HashSet 的遍历

                

public Set<String> getHashSet(){
   Set<String> set = new HashSet<>();
        set.add("1");
        set.add("2");
        set.add("2");
        set.add("3");
        set.add("4");
        set.add("5");
        set.add("6");
        set.add(" ");
        return  set;
}

Set<String> set =getHashSet();
for(String value : set){
    Log.e("TAG",value);
}


   

Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
    String value =iterator.next();
    Log.e("TAG",value);
}


  特性:HashSet 存入和输出数据的顺序不一定,元素不可重复

              Hash Set 是通过hashCode 和equals 两个方法 来保证元素的唯一性

              HashCode 值相同,才会判断equals 是否为true

              HashCode 值不同,那么就不调用equals


02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 5
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 4
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 1
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 3
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG:  
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 6
02-08 13:07:47.768 8960-8960/com.testopensourceapplication.citydemo E/TAG: 2



三、HashMap 的遍历

public HashMap<String,String> getHashMap(){
    HashMap<String,String> map =new HashMap<>();
    map.put("a","1");
    map.put("a","7");
    map.put(" ","2");
    map.put("b","2");
    map.put("c","3");
    map.put("d","4");
    map.put("e","5");
    map.put("f","6");
    return map;
}

Map<String,String> map =getHashMap();

for(Map.Entry<String,String> entry :map.entrySet()){
     Log.e("TAG", "key" + entry.getKey() + "-----" + "value:" + entry.getValue());
 }

Iterator<Map.Entry<String,String>> iterator  = map.entrySet().iterator();
 while (iterator.hasNext()){
     Map.Entry<String,String> entry =iterator.next();

     Log.e("TAG", "key" + entry.getKey() + "-----" + "value:" + entry.getValue());
 }

/**
 * 方式4,通过键遍历(效率低)
 */

for(String key :map.keySet()){
    String value = map.get(key);
    Log.e("TAG", "key:" + key + "Value:" + value);
}


/**
 * 方式5,只需要key集合或者value集合时候使用
 */

 for(String key :map.keySet()){

        Log.e("TAG","key:"+key);

    }

for(String value :map.values()){
    Log.e("TAG","value:"+value);

}

特性:

 HashMap 可以坚守null 键值和值  存储是键值对的形式
   键没有重复,没有顺序
map 添加存在相同key的时候,其value会覆盖前面的value。


02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:dValue:4
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:aValue:7
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:fValue:6
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:bValue:2
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:cValue:3
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key: Value:2
02-08 13:38:44.364 16864-16864/com.testopensourceapplication.citydemo E/TAG: key:eValue:5


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值