您的位置:首页 > 编程语言 > Java开发

Java 笔记之 ---集合总结

2015-09-11 14:15 363 查看
Collection (接口,集合框架的最高父类)

同一个集合可以存放不同类型的元素,但是不建议这么使用

同一个集合放同一种数据类型元素才有意义



两个接口


List 有顺序的,可重复的

用户可以根据元素的整数索引(在列表中的位置)访问元素

Set 无序的,不可重复的

List接口:

ArrayList(底层就是数组,大小可以伸缩) 不适合插入和删除

Vector(跟ArrayList是很相似,比较古老,不推荐使用,如果用到线程,建议使用)

LinkedList(双向链表实现的类) 适合插入和删除

Set接口 没有get()的,不可以根据index来获取值

HashSet(根据哈希桶存储,不可重复)

LinkedHashSet // 一般情况下不用使用,效率比较低,建议HashSet

TreeSet 实现了自然排序的功能(二叉树)

通过两个方法比较的

Comparable接口 compareTo() lang包

Comparator接口 compare() util包

如果使用TreeSet集合来存储自定义的类中的对象,

自定义类中必须要实现上面两个接口中的一个,并且重写相应的方法。

否则没办法存储

---------------------------

Map (映射,也叫视图 view 有键和值)



HashMap

HashTable

LinkedHashSet

---------------------------

ArrayList:大小可变

特点:数组的元素存放顺序是按存入的顺序实现的

不方便的地方:不能经常用来插入和删除元素

LinkedList:采用双向列表的底层实现

优点:在进行元素添加和删除的时候,效率很高

-----------------------------------

数据结构

队列 先进先出 ==》 排队

栈 先进后出 ==> 子弹夹

-------------------------------------------

TreeSet 在存储的时候,必须指定排列顺序

*

* 1.这个类实现Comparable,重写compareTo(),

*

* 存在的集合中的时候

*

* 按照compareTo的条件来排序 ,只能按照一个条件来排序

*

* 2.在创建集合的时候,指定好了存储的顺序 (建议使用)

*

* 写一个排序的类,要实现Comparator接口,重写compare()

*

* 用这个排序类的对象,来创建集合

*

* TreeSet(Comparator c)

-------------------------------------------------

在多线程的情况下,同时涉及到了集合。

注意:集合的同步性,建议锁定

-------------------------------------------------

/******************************************************************************************************************************/

* *

*

HashMap三种遍历 实例操作 *
*

* *

/******************************************************************************************************************************/

public class HashMapDemo {

public static void main(String[] args) {

HashMap<String ,Person> maps = new HashMap<String, Person>();

Person per1 = new Person("zhang1",12);

Person per2 = new Person("zhang2",123);

//put有两个作用 一放值 二返回对象

maps.put("张三",per1);

Person per = maps.put("张三",per2);//默认返回Person对象

System.out.println("Per........."+per.getAge()+per.name);


//遍历keySet 方法一

for (String key : maps.keySet()) {

maps.get(key).toString();

}

//遍历方法二

Set<Entry<String,Person>> sets = maps.entrySet();

for (Entry<String,Person> entry:sets ) {

System.out.println("姓名:"+entry.getKey()+" 年龄:"+entry.getValue().age);

}

//遍历方法三

Set<String> set =maps.keySet();

Iterator its = set.iterator();

while (its.hasNext()) {

String str = (String)its.next();

System.out.println("Person....."+str.toString());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: