java集合框架
一、Collection接口
注:包含int size();isEmpty();boolean contains(Object o);boolean add((Object o);boolean remove((Object o);Iterator iteartor();等基本方法
list接口
特点:(继承自Collection接口,也就拥有Collection接口的方法)
1.list中的元素是有序的
2.允许重复
3.支持null元素
4.可通过索引访问对象容器中的元素
1.Arraylist
概念上与数组相似,表示一组编入索引的元素,但Arraylist没有预先确定大小,长度可按需增大。
泛型:在定义类、接口时指定类型的形式参数;可以是任何类型的对象。为通用性着想,将集合设计成能保存任何类型的对象。
存在的问题:
1.集合对元素类型没有任何限制
2.把对象放入集合后,集合丢失了对象的状态信息,集合只知道它装的是Object,取出来之后还要强制类型转换。
方法归纳
1.void add(int index,Object o):在列表的指定位置插入对象
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.add(0, "qq");//在指定位置增加元素
输出:[qq, 11, 22]
2.object remove(int index):删除列表指定位置的对象
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.remove(1);//删除指定元素
输出:[11]
3.object get(int index):返回列表中指定位置的对象
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
System.out.println(list.get(0));
输出:11
4.object set(int index,object 0):用指定对象替换列表中指定位置的对象
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.set(0, "qq");
输出:[qq, 22]
5.object contains(object 0):判断列表中是否含有该对象,是返回true,否返回false
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
System.out.println(list.contains("11"));
输出:true
迭代器(遍历列表内容)
Iterator:遍历其中的内容
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
/*
* 采用Iterator迭代器遍历
*/
Set<String>keys=map.keySet();
for (Iterator<String>i=keys.iterator();i.hasNext(); ) {
String key=i.next();
String value=map.get(key);
System.out.println(key+"="+value);
}
输出:
b=上海
c=香港
a=成都
2.LinkedList(双向链表,不支持快速随机访问,效率比较低下)
注:实现双向链表的功能,将列表中的每个对象放在独立的空间里,每个空间中还保存有上一个和下一个连接的索引
基本方法包括:void addFirst(Object o); void addLast(Object o); void getFirst(); void getLast();void removeFirst();void removeLast();
1.void add(Object o):向列表中添加对象
LinkedList<String> list=new LinkedList();
list.add("000");
list.add("111");
list.add("222");
list.add("aaa");
输出:[000, 111, 222, aaa]
2.void addFirst(Object o):在链表开头添加一个对象
LinkedList<String> list=new LinkedList();
list.add("000");
list.add("111");
list.addFirst("ddd");
输出:[ddd, 000, 111]
3.void getFirst():返回链表中的第一个元素
LinkedList<String> list=new LinkedList();
list.add("000");
list.add("111");
System.out.println(list.getFirst());
输出:000
4.Object removeFirst():删除链表中第一个元素
LinkedList<String> list=new LinkedList();
list.add("000");
list.add("111");
list.removeFirst();
输出:111
二.Set接口(继承自Collection接口)
1.Set类型容器不能包含重复元素
2.元素可能有顺序,也可能没顺序
3.不能基于索引访问Set里的元素
1.HashSet(基于哈希算法的Set接口实现)
1.遍历HashSet时,其中的元素是没有顺序的
2.不允许出现重复元素
3.允许包含null元素
方法列举(大致方法和list大同小异)
set.add():增加元素对象
Set<String> set=new HashSet<>();
set.add("11");
set.add("22");
System.out.println(set);
输出:[22, 11]//可能有顺序,也可能没顺序
2.TreeSet(不仅实现类Set接口,还实现了SortedSet接口插入对象时,会按照一定的算法来排序)
方法(大致方法和list大同小异)
set.add():增加元素对象
Set<String> set=new TreeSet<>();
set.add("11");
set.add("22");
System.out.println(set);
输出:[11, 22]
三、Map<key,value>接口
1.一种从键key到值value的对应关系的集合
2.<key,value>可是任何引用类型的数据,key不能重复,value可以重复
1.HashMap类
1.基于哈希算法的Map接口,HashMap并不保证键以特定顺序排列,特别是不保证顺序永久不变。
方法列举:
1.map.put(Object key,Object value):向该映射中添加键值对
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
System.out.println(map);
输出:{b=上海, c=香港, a=成都}
2.remove(Object key):删除指定键的键值对
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
map.remove("a");
System.out.println(map);
输出:{b=上海, c=香港}
3.get(Object key):返回指定键相关的值
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
System.out.println(map.get("c"));
输出:香港
4.containsValue(Object value):如果包含指定值,则返回true
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
System.out.println(map.containsValue("成都"));
输出:true
5.containskey(Object key):如果包含指定值,则返回true
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
System.out.println(map.containskey("成都"));
输出:true
6.size():返回包含键值对的数量
Map<String,String> map=new HashMap<>();
map.put("a", "成都");
map.put("b", "上海");
map.put("c", "香港");
System.out.println(map.size());
输出:3
2.TreeMap类(基于红黑树的Map接口实现,将键存放在树种,键的顺序严格按照自然顺序或者自定义顺序两种方式排列)
方法和HashMap的方法大致一样,只是功能上稍有不同
put(Object key,Object value):向该映射中添加键值对
Map<String,String> map=new TreeMap<>();
map.put("c", "成都");
map.put("b", "上海");
map.put("a", "香港");
System.out.println(map);
输出:{a=香港, b=上海, c=成都}
结果严格按照顺序
浙公网安备 33010602011771号