- 集合框架的基本结构:
- Collection 接口
- Collection接口和Collections类有啥区别?
- List 接口
- ArrayList 类
- LinkedList 类
- Vector类
- Set 接口
- HashSet 类
- TreeSet类
- Map(mapping 映射) 接口
- HashMap
- HashTable
- 集合的遍历
- List集合
- Set集合
- map集合
数组:就是一种集合
数组的明显缺点:大小是固定的,不可变的 集合框架的基本结构: Collection 接口
可以存放对个元素的容器,这就是集合 有的集合是有序的,有的集合是无序的 有的集合允许重复元素,有的集合不允许有重复元素Collection接口和Collections类有啥区别?
1 Collection是一个接口规定了集合的基本操作 2 Collections 是一个类,主要来操作集合的List 接口
列表:有序的
实现类:
是list接口的大小可变数组的实现 是list接口的实现类 底层是数组,大小可变
public static void main(String[] args) {
//定义数组
int [] arr = new int[5];
//这里的<>是用来指定元素的类型,这个东西叫泛型
ArrayList list = new ArrayList();
//这是就创建了一个长度为0的list
//添加元素
list.add("java");
list.add("mysql");
list.add(0, "c++");
System.out.println(list);
//删除元素
list.remove(0);//删除指定下标的元素
list.remove("java");
System.out.println(list);//删除指定的元素
//如果是一个存放了整数的List
//泛型不能使用基本类型
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
//删除5
list1.remove(4);
list1.remove(new Integer(5));//删除下标
list1.remove(new Integer(5));//指定5删除
System.out.println(list1);
System.out.println(list1.size());//输出长度
//替换
list1.set(0, 100); //替换指定下标的元素
System.out.println(list1);
//清楚所有元素
list1.clear();
System.out.println(list1);
}
LinkedList 类
是list接口的实现类 底层采用的是链表 操作和ArraysList一样
ArraysList与LinkedList的区别
1 底层采用的方式不同 ArraysLIst是数组 LinkedList是链表
2 ArraysList元素查找要快,添加删除慢;
LinkedList元素查找要慢,添加删除快;
Vector类和ArrayList基本一样
Vector是线程安全的,是同步的
List是一个有序的集合,因此可以用下标访问元素
get(index) 通过下标来访问元素;
无序的,允许使用空值null
public class Demo05 {
public static void main(String[] args) {
HashSet set = new HashSet();
//添加
set.add("java");
set.add("mysql");
set.add("c++");
set.add(null);
System.out.println(set.size());
set.add("java");//集合中元素已经存在,添加失败返回false
System.out.println(set.size());
}
TreeSet类
可以排序,使用基本一样
Map(mapping 映射) 接口映射 :A->B
Map接口中的元素必须是一对键值(Key–Value)
可以从集合中,根据Key找到它对应的Value
不同步,可以使用空值,空键
public static void main(String[] args) {
//创建对象
HashMap map = new HashMap();
//添加元素
map.put("仝贺", 22);
map.put("tom", 18); //(键,值)tom和18形成了一个映射关系,被放到了map中
//取出元素
System.out.println(map.get("tom"));//用map.get方法,通过键取值
//移除键值对
map.remove("仝贺");
System.out.println(map.size());//判断,map的长度看是否移除
}
HashTable
同步的,不可以使用空值,空键
集合的遍历 List集合1 循环下标
2 Foreach (基于迭代器)
3 使用迭代器 Iterator
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("java");
list.add("ps");
list.add("mysql");
list.add("c++");
//迭代器
Iterator it = list.iterator();
while(it.hasNext()) {//it.hasNext()是否存在下一个,存在循环执行
String s = it.next();//取出迭代器下一个元素
System.out.println(s);
}
Set集合
不能循环,使用Foreach,使用迭代器
map集合不能使用循环
1 先将键/值对,生成一个set,然后再遍历
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("仝贺", 22);
map.put("tom", 18);
map.put("java", 20);
map.put("jing", 19);
//遍历
Set keys = map.keySet();//取出所有的键
for (String key : keys) {
System.out.println(key + "-->"+ map.get(key));
}
Collectionvalues = map.values();
for (Integer value :values) {
System.out.println(value);
}



