一、集合的由来
通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。
data = new int[3]; /*创建了一个int类型长度为3的数组*/
data[0] = 10; // 第一个元素
data[1] = 20; // 第二个元素
data[2] = 30; // 第三个元素
for(int x = 0; x < data.length; x++) {
System.out.println(data[x]); //通过循环输出数组
}
二、集合是什么?
是一个用来存放对象的容器。可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态的进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。
三、集合框架体系系图
四、list中ArraryList
ArrayList是基于动态数组的数据结构。
五、List中ArrayList常用方法
Boolean add( Object element) // 顺序添加一个元素
void add(int index, Object element) // 添加对象element到位置index上 ;
get(int index) //获取下标为index的位置的元素
int indexOf(Object element) // 获取 element第一次出现的位置
int lastIndexOf(Object element) //获取在List中最后出现的位置
remove(int index) ://删除index位置上的元素
int size() //集合中元素个数
//1.初始化一个list
List<String> cdlist=new ArrayList<>();
//2.向list中添加几道菜名;
//Boolean add( Object element)
Boolean b1=cdlist.add("红烧肉");
System.out.println("添加一道菜结果:"+b1);
//void add(int index, Object element) 添加对象element到位置index上 ;注意:index必须小于当前数组中的元素个数
cdlist.add(1,"椒盐虾");
cdlist.add(2,"小蘑菇炖鸡");
cdlist.add(3,"东坡肘子");
cdlist.set(1,"椒盐虾2");
System.out.println("list:"+cdlist);
//3.get(int index) 取出下标为index的位置的元素
//System.out.println(cdlist.get(5));
//会造成数组下标越界异常:Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 3
System.out.println(cdlist.get(1));
//4.int indexOf(Object element) :查找对象element 在List中第一次出现的位置;注意:list下标是是从0开始;
int num=cdlist.indexOf("小蘑菇炖鸡");
System.out.println("第一个小蘑菇炖鸡排在第:"+(num+1));
//5.int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置
cdlist.add("小蘑菇炖鸡");
cdlist.add("小蘑菇炖鸡");
System.out.println("最新list:"+cdlist);
System.out.println("最后一个小蘑菇炖鸡排在第:"+(cdlist.lastIndexOf("小蘑菇炖鸡")+1));
//6.remove(int index) :删除index位置上的元素
cdlist.remove(0);
System.out.println("最新list:"+cdlist);
//7. void clear() 清空;
//cdlist.clear();
System.out.println("最新list:"+cdlist);
//8.int size() 元素个数
System.out.println("元素个数"+cdlist.size());
//循环遍历list
for(int i=0;i<cdlist.size();i++) {
System.out.println("第"+i+"个菜品名称是:"+cdlist.get(i));
}
//增强for循环遍历list
for(String Name:cdlist) {
System.out.println(Name);
}
五、Map 中HashMap
Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外
六、Map的常用用法
clear() | 从 Map 中删除所有映射 |
remove(Object key) | 从 Map 中删除键和关联的值 |
put(Object key, Object value) | 将指定值与指定键相关联 |
putAll(Map t) | 将指定 Map 中的所有映射复制到此 map |
get(Object key) | 从map中获取键为key的值 |
//实例化一个HashMap
Map<String,Object> cdMap=new HashMap<>();
cdMap.put("当季时蔬","炝炒莲白");
cdMap.put("当季时蔬","干煸四季豆");
cdMap.put("折扣酒水","红星二锅头");
// System.out.println(cdMap);
//get(Object key) 从map中获取键为key的值
System.out.println(cdMap.get("折扣酒水"));
//remove(Object key) 从 Map 中删除键和关联的值
cdMap.remove("折扣酒水");
System.out.println(cdMap);
//putAll(Map t) 将指定 Map 中的所有映射复制到此 map
Map tempMap=new HashMap<>();
tempMap.put("夏季菜单", cdMap);
System.out.println(tempMap);