发表于: 2017-05-01 23:24:52
1 1271
今日完成:
学习Long,Array,List,Map
1.数组概念
■数组是存储同一种数据类型多个元素的容器。
■数组既可以存储基本数据类型,也可以存储引用数据类型。
●数组的定义格式
格式1:数据类型[] 数组名; int darr;
格式2:数据类型 数组名[]; int arr[];
2.数组的初始化
第一种初始化:初始化时只指定数组长度,由系统为数组分配初始值,默认是0.
int 【】arr = new int[12]; 定义一个int类型数组arr 长度是12;
第二种初始化:初始化时指定每个数组元素的初始值,由系统决定长度
int [] arr= {1,2,3,4} 定义一个int类型数组,初始化每个元素值
3.访问数组元素
直接打印数组名,打印的是数组堆内存中的地址
●数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度-1
●用数组名和编号的配合我们就可以获取数组中的指定编号的元素
●这个编号的专业叫法:索引
●格式:数组名[编号] -- 数组名[索引
]■数组名称为arr,索引为0,1,2
■获取数组中元素的格式:
◆arr[0]获取数组中的第一个元素
◆arr[1]获取数组中的第二个元素
◆arr[2]获取数组中的第三个元素
4.二维数组
定义:数据类型[][]数组名 = new 数据类型[]{元素1},{元素2},{元素3};
简化格式:int [][] arr = {{1,2,3},{4,5,6},{7,8,9}};
5.数组的遍历
遍历数组就是获取数组中每个元素,使用for循环来实现,
获取数值长度:数值名.length
//定义数组
int []arr = {1,2,3,4};
//使用for循环遍历数组
for(int i = 0,i < arr.length,i++)
{
输出每个元素值
System.out.pringtl(arr[i]);
}
二维数组遍历
int [][]arr = {{1,2},{2,3,4,4}};
for(int i = 0,i< arr.length,i++)
{
for(int j = 0,j < arr[i].length,j++)
{
System.out.pringtl(arr[i][j]);
}
}
2.List、Map集合
A.List
- List接口继承了Collection接口,因此包含Collection中的所用方法,List接口的的方法。
- void add(int index, Object element) 将指定的元素,添加到该集合中的指定位置上
- Object get(int index)返回集合中指定位置的元素。
- Object remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
- Object set(int index, Object element)用指定元素替换集合中指定位置的元素,返回值的更新前的元素
- Collection方法:
- boolean add(Object e) 把给定的对象添加到当前集合中
- void clear() 清空集合中所有的元素
- boolean remove(Object o) 把给定的对象在当前集合中删除
- boolean contains(Object o) 判断当前集合中是否包含给定的对象
- boolean isEmpty() 判断当前集合是否为空
- Iterator iterator() 迭代器,用来遍历集合中的元素的
- int size() 返回集合中元素的个数
- Object[] toArray() 把集合中的元素,存储到数组中
- List接口常用的实现类有ArrayList与LinkedList
- 1.ArrayList类
- 实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,缺点是向指定索引位置插入对象或删除对象的速度较慢。
- 2.LinkedList类
- LinkedList集合数据存储的结构是链表结构。优点是方便元素添加、删除的集合。缺点是对应随机访问集合中的对象速度较慢。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。如下图:
- Iterator迭代器概述
- java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。
- Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
- 集合中把这种取元素的方式描述在Iterator接口中。Iterator接口的常用方法如下:
- ●hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。
- ●next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。
- Collection接口的iterator
- 方法声明为:
- Iterator<集合中数据类型>iterator()
- 用来返回专属于该集合对象的迭代器对象(Iterator的子类对象)。
- 举例:Interator<String> it = list.iterator();
- 进行迭代的代码演示:
- //1,创建集合对象。
- Collection<String> coll = new ArrayList<String>();
- coll.add("abc1");
- coll.add("abc2");
- coll.add("abc3");
- coll.add("abc4");
- //2.获取容器的迭代器对象。通过iterator方法。
- Iterator it = coll.iterator();
- //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
- while(it.hasNext()){
- System.out.println(it.next());
- }
- /*
- 迭代器for循环的形式的使用
- for (Iterator it = coll.iterator(); it.hasNext(); ) {
- System.out.println(it.next());
- }
- */
- 增强for循环
- 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
- 格式:
- for(元素的数据类型 变量 : Collection集合or数组){
- }
- 它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。
- 遍历数组
- int[] arr = new int[]{11,22,33};
- for (int n : arr) {//变量n代表被遍历到的数组元素
- System.out.println(n);
- }
- 遍历集合
- Collection<String> coll = new ArrayList<String>();
- coll.add("itcast1");
- coll.add("itcast2");
- coll.add("itcast3");
- coll.add("itcast4");
- for(String str : coll){//变量Str代表被遍历到的集合元素
- System.out.println(str);
- }
- 增强for循环和老式的for循环有什么区别?
- 注意:新for循环必须有被遍历的目标。目标只能是Collection或者是数组。
- 建议:遍历数组时,如果仅为遍历,可以使用增强for如果要对数组的元素进行 操作,使用老式for循环可以通过角标操作。
B.Map
通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同
●Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
●Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
●Collection中的集合称为单列集合,Map中的集合称为双列集合。
●需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
Map常用方法
- put方法:将指定的键与值对应起来,并添加到集合中
■ 方法返回值为键所对应的值
使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;
使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。 - get方法:获取指定键(key)所对应的值(value)●remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。
●Map中常用的集合为HashMap集合、LinkedHashMap集合。
- HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
●LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
明天计划:
学习Interface和Impl,Model,try-catch,Throwable, Error,函数,参数,返回值。
评论