ArrayList和HashMap简析

HashMap:无序,存储个数不固定,可以动态添加数据,以键值对的形式存储数据,其中键是不能重复的,值是可以重复的。
1、声明:
               HashMap<引用数据类型,引用数据类型 > map;
2、定义 :
  HashMap<Integer, String> map1 = new HashMap<Integer,String>(); // 推荐
  HashMap<Integer,String> map2 = new HashMap<>(); // 推荐  jdk8开始支持第一种写法
  HashMap<Integer, String> map3 = new HashMap();

3、常用的方法:
           put() 往集合添加数据(键值对)
           size() 键值对的个数
           get(key) 返回指定键所映射的值   根据键,去相对应的值
            isEmpty()  判断集合是否有键值对  没有的话就是 true 否则就是 false
            containsKey(key)  判断是否包含 指定的键
            containsValue(value)  判断是否包含 指定的值
            clear()      清空集合中所有的键值对                  
             remover(key)  删除某个键值
   
4 、HashMap的遍历:
                 
Map<String, String> map = new HashMap<String, String>();
    map.put("k1", "v1");
    map.put("k2", "v2");
    map.put("k3", "v3");
    //将map.keySet()得到的键赋给str,再通过map.get(str)得到值
    for(String str:map.keySet()){
        System.out.println(map.get(str));
    }
 
 ArrayList  : 有序的集合  并且有下标   和数组一样下标从0开始,有顺序的
                    1.声明:
                            ArrayList names;   
 
                    2.定义:
                            ArrayList names = new ArrayList();
                            ArrayList<String> list1 = new ArrayList();
                            ArrayList<String> list = new ArrayList<>(); // 推荐
                            ArrayList<String> list2 = new ArrayList<String>();// 推荐
                            ArrayList list3 = new ArrayList<>();
                            ArrayList list4 = new ArrayList();

                  3、 常用的方法:
                        add()  添加元素

                        get()  根据索引获取对应的值  索引是从 0 开始的

                        remove(); 根据索引删除指定的值 删除之后,后面的元素会上位

                        isEmpty()  判断是否为空
                        indexOf()  根据指定的对象返回该对象在集合中首次出现的索引,如果没有就返回 -1;
                        lastIndexOf()  根据指定的对象返回 该对象在集合中最后一个位置上的索引  如果没有就返回 -1
                        set(int index, E element)   用指定的元素替代此列表中指定位置上的元素。
                        size() 获取集合的长度
                        toArray() 把集合转化成数组
                         例:Object[] objArr = list.toArray();  // 集合转化成数组
                        Arrays.toString  把数组转化成字符串 
                         例:String str = Arrays.toString(objArr); // 数组转化成字符串
                         Arrays.asList();    //将数组转换为集合list

                          如果数组是引用数据类型,那么就会把数组中的每个元素,存储到集合中去,转化成集合后,那么这个集合                     不可以进行添加删除操作,但可以进行修改操作
    Integer[] arr = {1,2,3,4,5};
    List<Integer> asList = Arrays.asList(arr);
    //不可以进行添加和删除操作 但可以进行修改操作
    asList.add(22); 
    asList.remove(2);
    asList.set(2, 30);

     如果是基本数据类型的数组 ,那么就会把整个数组当成一个对象 存储到集合中去
    int [] arr = {1,2,3,4};
    List< int []> asList = Arrays.asList( arr );
    System. out .println( asList );  //打印出来的所存储的地址
    System. out .println( asList .size()); //==1  大小为1,因为当成了一个对象       
             
常常使用Arrays.asLisvt()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于:
Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。

解决方法是使用Iterator,或者转换为ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);

List<Map<object,objevct>>  遍历:

Map map = new HashMap<String, Object>();
    map.put("1", "fds");
    map.put("2", "valu");
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    list.add(map);
    for (Map<String, Object> m : list)
    {
      for (String k : m.keySet())
      {
        System.out.println(k + " : " + m.get(k));
      }

    }


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值