40.Java当中的数组
数组和对象属于引用数据类型
//数组的静态声明法,中括号[] 的位置可以写在变量的前面或者后面
int arr [] = {5,2,7,9,0};
/arr.length 得到数组长度
//数组的动态声明法
,注意要声明数组长度,不然会报错
int arr [] = new int[10];
数组的默认值:
int :0
boolean :false
char :ASCII 编码为0的字符(空字符null)
二维数组:数组当中的元素还是数组
数组的缺点:数组的长度是固定的
41.类集框架(一)
1.类集框架是JDK中提供的一系列类和接口
2.位于java.util包中
3.主要用于存储和管理对象
4.主要分为三大类----
集合、列表和映射。
集合(Set): 集合中的对象不按照特定的方式排序,并且没有重复对象
列表(List):列表中的对象按照索引位置排序,可以有重复对象
映射(Map):每一个元素包含一个键对象和一个值对象,键不可以重复,值可以重复
最顶层的接口就是Iterator和Collection接口 Set接口和List接口都是Collection接口的子接口
Collection接口是Iterator的子接口
ArrayList 是List的实现类 add(),remove(),get(),size()
import java.util.List;
import java.util.ArrayList;
public class Test {
public static void main(String args[]){
ArrayList<String> arrayList = new ArrayList<String>();
//类似于数组,但是长度可以无限延伸
//但是要指定存放什么类型的对象<泛型>,也可指定自定义类
//比如ArrayList<Student> arrayList = new ArrayList<Student>
arrayList.add("a");//添加对象
arrayList.add("b");
arrayList.add("c");
String s = arrayList.get(1);//取出 第一个元素 “b”。注意“a”是第0个元素
arrayList.remove(1);//移除“b”,“c"自动替补原来“b”的位置
//arrayList.size(); 得到arrayList的长度
for(int i = 0;i<arrayList.size();i++)
System.out.println(arrayList.get(i));
}
}
ArrayList 和数组相比最大的好处是长度不限,而数组在声明时就必须固定长度
42.类集框架(二)
Collection和Iterator接口
Set接口和List接口都是Collection接口的子接口
HashSet是Set的实现类 也要用到泛型
import java.util.Set;
import java.util.HashSet;
public class Test {
public static void main(String args[]){
//泛型声明String :这个集合对象当中所存储的元素都是Stirng类型的
HashSet<String> hashSet = new HashSet<String>();
Set<String> set = hashSet;//向上转型成Set类型
boolean b = set.isEmpty();
System.out.println(b);//打印出true
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("c");//重复添加“c”,长度是4 (集合中不会有重复的元素)
int i = set.size();
System.out.println(i);
set.remove("b");
}
}
由于集合(Set)中的元素是无序的,和List不一样。List是根据把元素加进去的顺序给元素分配一个下标 ,要想取出元素,直接调用get(元素下标)。
而集合中的元素没有下标,需要用迭代器Iterator。----
Iterator接口 iterate(迭代)
继承关系:Iterator <--- Collection <--- Set <-- HashSet
Iterator中的方法 :hasNext() next()
最开始游标并不指向任何元素,而是在所有元素的最前面,如图
hasNext():返回boolean , 该返回值表示游标的后面还有没有下一个元素
next():返回游标所指位置的下一个元素,并将游标向后移
public class Test {
public static void main(String args[]){
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
//调用Set对象的iterator()方法生成一个迭代器对象,该对象用于遍历整个Set
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
继承关系:Iterator <--- Collection <--- Set <-- HashSet
<---List <--ArrayList
List也可以用iterator()生成一个迭代器对象来取元素,但它有更方便的取法get().
Set只有这一种取法
43.类集框架(三)
Map <---HashMap 键值对
JDK帮助文档
put(),get(),size()
public class Test {
public static void main(String args[]){
HashMap<String,String> hashMap = new HashMap<String,String>();
Map<String,String> map = hashMap;//向上转型,注意要写泛型<>
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "d");
int i = map.size();
System.out.println(i);
map.put("3", "e");//如果相同的键put(),新的值会覆盖原来的值
String s = map.get("3");
System.out.println(s);
}
}