1.数组容器
1.特性:固定大小,有序。可以存储任意类型(简单类型,对象类型)。
2.数组的定义:
语法:类型[ ] 变量名=null;
其中类型可以是Java的任意类型,包括:简单类型,对象类型
数组定义案例:
int[ ] a1=null; a1=new int[10];//定义一个长度为10的整数数组
long[ ] a2=null; a2=new long[20]; //定义一个数据类型为long长度为20数组
String[ ] a3=null;a3=new String[30]; //定义一个数据类型为String长度为30的数组
Person[ ] a4=null;a4=new Person[5]; //定义一个数据类型为Person长度为5的数组,需要引入有Person方法的包,否则Person无法解析为类型。
3.创建数组:
(1)只创建一个固定大小的数组,没有存储任何数据(方式一和上面举的几个例子就是如此)
方式一:一般推荐使用这种方式
格式:数组存储的数据类型[ ] 数组名称 = new 数组存储的数据类型[数据长度];
如:定义一个长度为10的整数数组 int[ ] arr=new int[10];
定义一个长度为10的字符串数组 String arr=new String[10];
(2)创建数组时就在数组中存储了数据
方式二:
格式:数组存储的数据类型[ ] 数组名称 = {元素1,元素2,元素3,......};
如:定义一个存储 张三 李四 王五 赵六字符串的数据容器
String[ ] arr={"张三","李四","王五","赵六"}
Person p1=new Person(“吴明”,20);//调用Person注意自己的类中是否调用了包含有Person方法的包,还有标点大小写
Person p2=new Person(“刘明”,20); //调用Person注意自己的类中是否调用了包含有Person方法的包, 还有标点大小写
方式三
格式:数组存储的数据类型[ ] 数组名称 = new 数组存储的数据类型[]{元素1,元素2,元素3,元素4,......}
如:定义一个存储10,20,30,40的整型数组
int[ ] arr=new int[ ]{10,20,30,40}
备注:数组为上篇笔记中所写的按大小是否可变容器中的不可变大小容器,长度一旦指定不可更改。
4.数组的遍历:(遍历就是将容器中的每个对象取出来,如挨个打印出来)
(1)使用普通的for循环
数组的每个元素都有下标位置,从0开始到i结束,如
for(int i=0;i<a1.length;i++)
(2)Java提供了所有容器的简便变量信息(for each循环)
for(类型 变量:容器){ }//类型要是数组的则类型一致
for(long m:a2) {
System.out.println(m);
}
5.
6.取得数组单元格的数据:
Int m=a1[2];
List容器
1.特性:可变,有序(元素是从0开始,有序的)
2.类型:Java.util.List
3.List接口的定义:
Public interface List<E> extends Collection<E>定义了所有List容器应该有的功能:功能列表。
4.实现类:
AbstractList,AbstractSequentialList,ArrayList,AttributeList,CopyOnWriteArrayList,LinkedList,RoleList,RoleUnresolvedList,Stack,Vector
编程中使用最多的是:
ArrayList:类似数组,容器元素用下标访问,查找指定元素快,但执行插入和删除操作时速度较慢。
LinkedList:类似链表结构的List,执行插入和删除操作速度快,但查询指定元素较慢。
5.创建List容器
(1)List 对象=new 实现类();
可以存储所有对象类型,实际编程很少使用,通常List容器都用来存储相同类型的数据。
从JDK5开始支持容器的泛型,通过泛型指定容器只能存储特定的类型。
List<String> list01=new ArrayList<String>();//只能存String类型的对象,如下的10就会报错
List<Person> list01=new LinkedList<Person>();//只能存Person类型的对象
6.List提供的主要方法:(参考JDK API文档):List接口的方法
Set容器
1.特性:无序,可变,只能存对象类型。
2.类型:java.util.Set
3.定义:public interface Set<E> extend Collection<E>
Set接口定义了所有Set容器必须支持的方法。
4.实现类型:
AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet
使用较多的:HashSet,LinkedHashSet,TreeSet(排序)
5.创建Set容器
(1)用于存储任何对象类型的Set容器
Set 变量=new 实现类();
(2)存储固定类型对象的Set容器(同List容器中的泛型)
Set<E> 变量=new 实现类<E>();
6.Set接口定义的方法:(参考 JDK API文档):Set接口的方法
Set容器运行示例:
Map容器
1.特性:其对象必须有标签(key),无序,可变,且key值不能重复
2.接口类型:Java.util.Map
3定义:public interface Map<K,V>
4.实现类:
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap
常用的类有:HashMap,LiskedhashMap,TreeMap
5.创建Map容器
(1)无泛型,不限定存储的key和value(编程时一般不适用)
Map map01=new HashMap();
(2)带泛型,限定存储的key和value
Map<String,Number> map01=new HashMap();//指定类型为String和Number
6.Map接口定义的方法:(参考JDK API文档):Map接口的方法