学JAVA很长时间了,但对容器类一直没什么概念,老师没讲自己也没去看,也没做过什么项目...所以就一直搁浅了,说起来还真是惭愧,
JAVA还真是没入门呢,今天赶紧恶补一下,下了视频来看,对容器整体上有个初步的概念,做个笔记,以后回忆也方便点儿,要查API多运用了
容器 container
collection接口-定义了存取一组对象的方法,其子接口set和list分别定义了存储方式.
Set中的数据对象没有顺序且不可以重复(equals)
实现的就是数学概念上的集合,重复数据是不能被添加进去的
retainAll(Collection c) 交集
containsAll(Collection c) 全集
List中的数据对象有顺序且可以重复
ArrayList 以数组实现的;LinkedList 以链表实现的
map接口定义了存储"键(Key)-值(Value)映射对"的方法
put,get,putAll....
HashMap
TreeMap
Auto-boxing/unboxing(>jdk1.4)
在合适的时机自动打包,解包
Map m1 = new HashMap();
//m1.put("one",new Integer(1));
m1.put("one",1);//现在可以直接这么写了
//int i = ((Integer)m1.get("one")).intValue();
int i = (Integer)m1.get("one");//现在可以直接这么写了
如何选择数据结构
衡量标准:读的效率和改的效率
Array读快改慢
Linked改快读慢
Hash两者之间
Collections类 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成
sort()排序
shuffle()随即排序
reverse()反转
封装好的binarySearch()使用二分搜索法搜索指定列表,以获得指定对象
实现了java.lang.Comparable()接口的对象都可以排序,
补充:
Iterator 迭代器接口有3个方法
boolean hasNext();
E next();返回迭代的下一个元素.
void remove();删除,
迭代器运行的时候锁定操作,所以只有这个删除方法
增强的FOR循环,仅语法简便
int[] a ={1,2,3,4,5};
for( int i : a){
System.out.println(i);
//方便的遍历内容,但不能方便的访问数组小标
}
Collection c = new ArrayList();
c.add();
c.add();
c.add();
for(Object o: c){
System.out.println(o);
//与iterator相比不能方便的删除集合中的内容
//内容也在调用iterator
}
泛型Generic(jdk1.5+)
看API就可以了,直接指定类型,不用强制转换
Map<String, int> map = new HashMap<String,int>();
取数据也方便了
突然明白,崩溃的日子,是自己的不努力造成的.