标签:
如果并不知道程序运行时需要多少对象,或者需要更复杂的方式存储对象,这时就用到集合框架
两大接口 Collection Map
三大接口 List Set Map (list和map是collection的子接口)
实现类:List(ArrayList、LinkedList) Set(Hashset、TreeSet) Map(HashMap、TreeMap)
collection 提供了对集合进行排序、遍历等多种算法实现;
Collection 接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序(插入顺序,有索引)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key(键)到value(值)的映射;
List
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问的效率比较高;
LinkList采用链表存储方式。插入、删除元素时效率比较高;
ArrayList<Integer> list = new ArrayList();//<>泛型 (规定存入的数据类型)存入的不能是基本数据类型,必须是其包装类(引用数据类型)
list接口常用方法
boolean add(Object o) 在列表的末尾顺序添加元素,起始索引位置从0开始;
void add(int index, objext o)在指定的索引位置添加元素,索引位置必须介于0和列表中的元素个数之间
int size() 返回列表中的元素个数
Object get(int index) 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
boolean contians(Object o) 判断列表中是否存在指定元素
boolean remove(Object o) 从列表中删除元素
Object remove(int index)从列表中删除指定位置元素,其实索引位置从0开始
LinkedList常用方法(上面的方法都能用)
void addFirst(Object o) 在列表的首部添加元素
Last末尾
Object getFirst() 返回列表中的第一个元素
Last最后一个
Object removeFirst() 删除并返回列表中的第一个元素
Last最后一个
如何遍历List集合
1。通过for循环和get()方法配合实现遍历
2。通过迭代器Iterator实现遍历
Iterator<Parts> iter = list.iterator();
while(iter.hasNext()){
Parts part = iter.next();
System.out.println(part);
}
所有集合接口和类都没有提供相应遍历方法,而是有Iter实现集合遍历
Collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的俩个方法可实现遍历
boolean hasNext():判断是否存在另一个可访问的元素
Object next():返回要访问的下一个元素
ArrayList<Integer> list = new ArrayList();//<>泛型 (规定存入的数据类型)存入的不能是基本数据类型,必须是其包装类(引用数据类型)
// for (int i = 0; i < 10; i++) {
// list.add(i);//添加
// }
// System.out.println(list.size());//打印长度
//// list.add(1);
// list.add(0,249);//插入一个元素,前面索引,后面添加值
// System.out.println(list);
//
//
// System.out.println(list.get(0));//获取 list.get(index)
//// list.remove(index)//删除下标为index的元素
//// list.remove(o)//删除元素o;
// System.out.println(list.contains(0));//返回布尔值,是否存在0元素
// ArrayList<Integer> list2 = new ArrayList<Integer>();
// list2.add(11);
// list2.add(12);
// list2.add(13);
// list.addAll(list2);//在末尾插入list2
// list.addAll(0,list2);//在索引位置处插入list2
// list.removeAll(list2);//删除list中list2 的所有元素
// list.clear();//清空集合
// list.isEmpty();//判断集合是否为空
// System.out.println(list2);
// LinkedList<Integer> list = new LinkedList<Integer>();
// list.add(0);
//// list.add(1);
// list.add(1,1);//(索引,插入的元素)
// list.addFirst(110);//在首位添加
// list.addLast(120);//末位添加
// System.out.println(list);
// System.out.println(list.getFirst());//获取首位 或list.get(0)
// System.out.println(list.get((list.size()-1)));//获取末位 或 list.getLast()
// System.out.println(list.removeFirst());//删除并返回第一个元素
// System.out.println(list);
// System.out.println(list.removeLast());//删除并返回最后一个元素
// System.out.println(list);
// Object ints[] = list.toArray();//把集合转换成数组
// List<Object> list2 = Arrays.asList(ints);//把数组转换成集合
Set接口存储唯一,无序的对象
HashSet是Set接口常用的实现类
Set接口不存在get方法
set集合存入数据唯一不可重复 如果存入的是基本数据类型,比较的是值
如果存入的是String 比较的是字符串里的值,比较特殊
如果存入的引用数据类型,比较的则是对象,地址和值
HashSet<Integer> set = new HashSet<Integer>();
//添加
set.add(11);
set.add(13);
set.add(12);
set.add(5);
set.add(7);
set.add(4);
//删除
set.remove(11);
System.out.println(set);
//查询
Iterator<Integer> iter = set.iterator();//声明
while (iter.hasNext()) {
System.out.println(iter.next());//使用
}
HashMap接口常用方法
键不能重复,值能重复
object put(object key, object val) 以“键-值对”的方式进行存储
object get(object key) 根据键返回相关联的值,如果不存在指定的键,返回null
object remove (object key) 删除由指定的键映射的“键-值对”
int size() 返回元素个数
Set keySet() 返回键的集合
Collection values() 返回值的集合
boolean containsKey(Object Key) 如果存在由指定的键映射的“键-值对”,返回true
HashMap<Integer, String> map = new HashMap<Integer, String>();
// map.put(1, "one");
// map.put(2, "two");
// map.put(3, "three");
// map.put(4,"four");
// System.out.println(map.get(2));
// System.out.println(map);
// System.out.println(map.remove(3));
// System.out.println(map);
// System.out.println(map.size());
// System.out.println(map.keySet());
// //Iterator迭代器
// //Map键值对
// //Map.Entry 键值对存储的结构
// //Map.entry的泛型结构跟Map的存储数据类型是一样的
// //Map.entrySet()返回的是键值对Set集合
// //这个Set存放的就是<Map.entry<K, V>>,数据源
// //固定写法Iterator< Map.Entry<> >
// //此迭代器返回的是键值对的全部数据
// Iterator<Map.Entry<Integer, String>> iter = map.entrySet().iterator();
// while(iter.hasNext()){
// Map.Entry<Integer, String> entry = iter.next();
// //得到键的值
// Integer key =entry.getKey();
// System.out.println("key"+key+",");
// String value = entry.getValue();
// System.out.println("value:"+value+",");
// }
// //此迭代器返回的是键的全部数据
// Iterator<Integer> keyIter = map.keySet().iterator();
// while(keyIter.hasNext()){
// Integer key = keyIter.next();
// System.out.println(key);
// }
// //此迭代器返回的是值的全部数据
// Iterator<String> valueIter = map.values().iterator();
// while(valueIter.hasNext()){
// String value = valueIter.next();
// System.out.println(value);
// }
集合框架
标签:
原文地址:http://www.cnblogs.com/Juladoe/p/5819633.html