同一个集合可以存放不同类型的元素,但是不建议这么使用
同一个集合放同一种数据类型元素才有意义
两个接口
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());
}
}
}