什么是集合框架:
类似于C语言中的数据结构,Java中的集合框架也是对数据进行集合存储的的一种方法,并是为了方便开发者去使用,Java集合框架将常见的数据结构规范化方便开发者使用。
这是一个较为庞大的体系,其中我们常用的是ArrayList
、LinkedList
、HashSet
、LinkedHashSet
、HashMap
、LinkedHashMap
着几种类型集合类
而在以上一种集合类的上方有几种集合接口
首先是最顶层的Collection
与Map
,然后是继承于Collection
的Set
与List
以及其他不常用的接口等等,他们的作用是方便开发者创造出属于自己的存储容器
实现计划的目标.
ArrayList的使用
可以理解为数据结构中的顺序表
-
如何创建一个ArrayList
ArrayList<String> list = new ArrayList<>();
首先是新建一个
ArrayList
中间涉及到一个泛型
的概念先解释一下:
就是在<>
中的内容, 我们可以先看ArrayList
的原型:public class ArrayList<E> extends AbstractList<E>
这个
<E>
是一个形参,我更加愿意理解为一个占位符
,想象一下在ArrayList
类中的集合元素内容不单单是一种有可能是:String
,Object
,你自己定义的类
等等,所以不能把类型定死,例如在ArrayList
类中的:public boolean add(E e) { modCount++; add(e, elementData, size); return true; }
函数的形参是
E e
而这个E
就是我们在实例化类的时候在<>
的内容,比如当前我们的E
就是String
类型.在实例化一个
ArrayList
实例以后就是向其中添加元素:list.add("hi"); list.add("you");
那么一个装满东西的
ArrayList
就做好了; -
如何遍历ArrayList
与
ArrayList
的遍历与数组类似,但是假如了迭代器的概念public class Test{ public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("Hello"); list.add("World"); list.add("HAHAHAHA"); //第一种遍历方法使用 For-Each 遍历 List for (String str : list) { //也可以改写 for(int i=0;i<list.size();i++) 这种形式 System.out.println(str); } //第二种遍历,把链表变为数组相关的内容进行遍历 String[] strArray=new String[list.size()]; list.toArray(strArray); for(int i=0;i<strArray.length;i++) //这里也可以改写为 for(String str:strArray) 这种形式 { System.out.println(strArray[i]); } //第三种遍历 使用迭代器进行相关遍历 Iterator<String> ite=list.iterator(); while(ite.hasNext())//判断下一个元素之后有值 { System.out.println(ite.next()); } } }
使用迭代器更加保险, 不用担心越界问题的发生;
Map的使用
Map是一种
键-值
对的形式类似于python
中的字典
-
如何创建一个Map对象
Map<String, String> map = new HashMap<String, String>();
与
ArrayList
类似只是有两个泛型
的参数分别对应标签
和元素
添加内容:
map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3");
以上就是添加标签和对象内容到Map中
-
Map如何遍历
public class Test{ public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.println("通过Map.keySet遍历key和value:"); for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); } //第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第三种:推荐,尤其是容量大时 System.out.println("通过Map.entrySet遍历key和value"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第四种 System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); for (String v : map.values()) { System.out.println("value= " + v); } } }
Map.entrySet
:该方法返回值就是这个map中各个键值对映射关系的集合。
以上便是常用的集合框架内容,如有错误欢迎指正