ArrayList和HashMap简析,arraylisthashmap
分享于 点击 36828 次 点评:179
ArrayList和HashMap简析,arraylisthashmap
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));
}
}
相关文章
- 暂无相关文章
用户点评