Java 容器
1、出现容器的原因:数组的长度一旦指定,程序执行的过程不能改变,以至于可能会浪费内存空间。 所以就有了容器,容器的大小可以任意改变,容器的大小就是放了多少数据就是多大。
Collection Map
Set(无序,唯一) List(有序,可重复的) HashMap
HashSet ArrayList LinkedList
Hash码时无序的,但查找是最快的。
Array内存地址连续(数据查找更快) Linked内存地址不连续(数据更新更快)
Set set = new HashSet();
set.add();//添加
set.remove();//移除
set.isEmpty();//判断是否为空 也可使用set.size()方法
2、List 接口中其实就是多出来一些根据索引进行操作的方法:如在指定位置上添加数据add(int index,E element)、删除数据remove(inr index)、替换元素set(int index,E element)、判断一个元素出现的位置indexOf(Objext o)。
在删除int数据类型的时候,若不是利用索引来删除的话,则需 remove(new integer(int x))
3、容器的迭代:
Iterator(容器的迭代器)
所有实现了Collection接口的类都有一个iterator()方法,这个方法会得到一个实现了iterator接口的类的对象:
for(Iterator i = list.iterator();i.hasNext();){
Object o = i.next();
}
List虽然有索引,但是也必须用迭代器来迭代,因为这是唯一线程安全的方法。
4、Collections类
提供了一系列的方法来对list进行操作
自己写的类,和他相关的一切规则需要我们自己来定义,比较对象是否相等,判断对象的大小。
增强for循环:不能方便的用于索引,只能用于简单的遍历。增强的for循环迭代的是容器的话,内部默认也是使用iterator
for(int n : num){}
n为接收的变量 num为需要循环的内容
5、泛型:
指定当前的容器中只能放置哪种类型,并且泛型中是没有父类引用指向子类对象的概念的。
List<Person> list = new ArrayList<Person>();
6、Map出现的原因:
Hashset没有索引,不方便通过索引来对容器进行操作
Map其实就是在set的基础上加了索引,并且这个索引可以自己定义
Map是以key-value(键-值对)保存的,只可以重复,但索引不能重复
Map中保存的是一个一个的Entry,Entry代表一对key-value,它是Map的属性(成员变量)
Set<Map.Entry<String,String>>entrys = map.entryset();
例:
Map<String,String> map = new HashMap<String,String>();
map.set(“1”,”one”);
map.set(“2”,”two”);
map.set(“3”,”three”);
map.set(“4”,”four”);
Set<Map.Entry<String,String>>entrys = map.entryset();
for(Iterator<Map.Entry<String,String>> i = entrys.iterator();i.hasNext();){
Map.Entry<String,String> entry = i.next();
System.out.println(entry.getvalue());
}

浙公网安备 33010602011771号