1、The type List is not generic; it cannot be parameterized with arguments <Integer>
list的泛型报错报错。是导入包awt不是util。所以错误
参考链接:http://blog.csdn.net/aaawqqq/article/details/25339849
2、eclipse的快捷方法创建
重写equals,toStirng,hashCode,新定义的类中属性的set,get方法----------->右键-->source-->然后根据需要点击,自动生成
3、在开发的时候,不小心改错,ctrl+z 返回不了的时候,可以使用历史版本控制。
右键-->replace with-->local history 然后选择需要恢复的时间点 是eclipse自动备份
4、Java集合简单介绍 Collection 是一个接口,不可直接实例化,需要通过类实现接口,其中分成list和set子类,这两个类还是接口,在使用的时候还是需要实现才可以使用。
1)list 元素是有序,可重复。实现接口子类有ArrayList(通过操作数组实现的,方便查询)和 LinkedList(通过数据结构中的链表实现的,方便对集合的元素操作,增删改)。
声明:List<E> list = new ArrayList<E>(); //其中 E是泛型 ,可以通过使用者修改数据类型,传入参数类型,方法的返回类型
操作:list.add(e); list.remove(); list.get(int index)//获取集合某一个元素的值.... 具体参考API
遍历:可以通过Java api 1.5 后新增的语法,新的for循环;也可以通过迭代器跌打集合元素
for(E e:list){ // 与原来的for循环比较,新的for循环,适合于集合,数组的便利,代码的简单,在不需要知道元素在集合或数组中使用
....
}
迭代器迭代:
Iterator<E> it = list.iterator();
while(it.hasNext()){ //必须是先判断是否有这个元素,然后才能取出
it.next(); //取出元素
.......
}
2) set 元素是无序,不可重复。实现接口的子类有HashSet 使通过散列算法(Hash算法存)储元素的,查询方便。
声明:Set<E> set = new HashSet<E>();
操作:set.add(); ... //但是没有 get()方法,因为是无序的
遍历:只能通过迭代器迭代,与list类似
重写hashCode的需要尽量保证HashCode的值不同
--------------------------------------------
使用HashCode集合存放元素时
应该保证:equals与hasCode方法在API上定义的要求存放规则:
不同对象存放时,不会保存hashCode相同并且equals像同。缺一不可,否则hasSet不认为他们是否重复对象HashCode决定位置,equals决定是否一样
集合的工具类:Collections 其中 sort方法比较常用做自然排序
Comparator比较器 也是一个接口 实现接口需要实现一个 int compareTo(E o1,Eo2)
一般来说重写equals方法是有必要重写hashcode方法(------>Java api中规定的)
若equals方法返回true,那么这两个对象应该有相同的hashcode,
hashcode相同不一定保证equals为true; 就是充分不必要。
HashCode 方法返回是 句柄(地址)
5、另一种集合 map。
实现子类有hashMap,也是接口,以键值对形式存储的 hash算法
treeMap 通过二叉树检索
key可以不可以重复 value可以重复 其实set就是HashMap数据结构 将value设置成null
所以hashMap 的实现与hashSet是一样的,遍历的也是
Map接口实现的子类的有个重载的构造方法,里面有个参数 加载因子 默认情况下是75% 一般是使用默认的,检索效率高
LinkedHashMap 实现保存的顺序与遍历的顺序是一样的,使用过链表操作
申明:Map<K,V> map = new HashMap<K,V>();
遍历:有两种:
1、获取所有的key并且根据key获取value map.getKey() 返回一个key的set集合
Set<K> mapSet = new HashSet<K>();
for(String key:mapSet){
map.get(key);//获取value
}
或者
for(Iterator<K> it = keySet ; it.hasNext() ; ){
K key = it.next;
V value = map.get(key);
}
2、以键值对形式进行遍历. 通过entrySet()方法 返回也一个Entry类的实例(键值对) 保存到set集合里面
Entry是map里面的一个内部类
描述键值对 getkey() 获取key值 getValue() 获取value值
Set<Entry<K,V>> entrySet = new HashMap<Entry<K,V>>();
for(Entry<K,V> entry : entrySet){
K key = entry.getKey();
V value = entry.getValue();
}
6、Java的设计模式
单利设计模式:三个步骤。1、定义类自身的的静态的私有属性 2、将构造方法私有化 3、编写一个静态方法,返回该类的对象,但是一个类只有一个对象。if(obj == null){创建对象} return 对象
模板设计模式:通过抽象方法实现,将大部分相同功能的方法实现,不同的部分则有子类集成后实现
7、通过输入 main后 --> ctrl+/ -->选择后 输入Syso--->ctrl+/--->选择后 编译器会自动生成部分代码