Java学习笔记1——集合

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+/--->选择后   编译器会自动生成部分代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tobin liao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值