一、数组、对象数组、集合框架的特点与区别
数组:只能存同一基本类型的数据(数组长度不变)
对象数组:在数组里面放置对象或者元素集合(数组长度改变)
集合框架:放的是动态对象数组(只能放对象数组长度改变)
二、为什么需要集合框架?
如果不知道程序运行时需要多少对象,或者需要更复杂方式存储对象,可以使用集合框架。
Collection集合框架用来存储和操作不同类型的对象组。
三、集合框架的体系
Conllection接口下面有三个集合,list ,set,map集合,他们之间的特点与区别
*
使用集合时,用里氏替换原则
List<String> li =new ArrayList<>();
Set<String> set=new HashSet<>();
Map<String , String> map=new HashMap<>();
MAP的键值不能放基本数据类型
*
list
特点:因为list集合有下标,所以储存的值特点有序且不唯一
list集合下有vector,array,linked类型
vactor 特点:有下标,储存格式与array很像,是最早的数组,很安全但是效率低,线程同步,线程安全
linked 特点:有下标,对数据增删操作很快,查询操作很慢,因为是链式储存数据,所以增加删除时数据不进行移位
array 特点:有下标,对数据查询操作很快,增删操作很慢,因为有序储存所以删除或者修改时,数据要进行移位
线程同步,线程安全
线程同步与异步 例子:烧水
同步:排队进行
异步:同时进行
array的增删改查
//增加四种
add(String e) 是插入一个的元素,插入的类型是根据申明的list集合来的
add(int index,String e)是在一个指定位置插入一个元素,插入的类型是根据申明的list集合来的
addAll(Conllection<? extends String>c)是在此集合中插入一个集合
addAll(int index,Conllection<? extends String>c)是在此集合指定位置中插入一个集合
//删除
常用 .remove 用来删除一个元素,可以选择下标
//修改
集合中并"没有"修改方法,但是可以通过删除一个下标的元素,并且在此下标中添加一个元素,完成修改操作
set
特点:因为set集合没有下标,所以他数据储存方式是无序且唯一
set集合下有hashset类与sortedset接口下的treeset类
hashset :简单的排序
//增加删除与array类似
//查看不能用for循环,只能用foreach还有迭代
treeset 特点:根据某种(规则)对里面的元素进行排序
规则1: java.lang.Comparable
规则2: java.util.Comparator
map
map集合中增加只有,put方法map.put(K, V);
//查询
map集合中,查询必须先把map集合的键获取并且转化成set集合获取,然后迭代map.setkey的set集合
在输出Map.get(key),key放迭代出来的键
Set<String> set=map.keySet();
Iterator<String> it=set.iterator();
while(it.hasNext()) {
System.out.println(map.get(it.next()));
}
---------------------------------------------------------------------------------------------------------
Conllections 类
Conllections 类
排序 sort方法
collections.sort(list)
反向输出 reverse方法
collections.reverse(list)
交换 swap方法
collections.swap(list, i, j)
#硬编码不用reverse与swap方法反向输出(假设一个集合有五个int元素)
for(int i=0; i<list.size()/2 ;i++){
int a=list.get(i);
list.remove(i);
list.add(list.get(i),list.size()-1-i);
list.remove(list.size()-1-i);
list.add(list.size()-1-i,a);
}
取最大最小 max方法
collections.max();
复制 copy方法