集合与数组的区别
数组
特点:
1、数组是定长的
2、数组可以存储多条数据
3、相同类型的多条数据
4、数组不能自动扩容
5、数组既能存储引用数据类型也能存储基本数据类型
集合
位于java.utile包中
特点:
1、集合可以存储多条数据
2、可以存储多条 不同类型 的数据
3、集合可以自动扩容
4、集合只能存储对象 存入的基本类型是 包装类
区别:
1、数组也是容器,是定长的,访问较快,但不会自动扩容
创建list
//集合创建
List list=new ArrayList<>();
总接口collection(接口)
list接口与set接口的区别
list:有序的集合
(元素的存放顺序 等于 存入顺序,允许元素重复)
set:无序的集合
(元素的存放顺序 不等于 存入顺序,元素不能重复)
泛型:<E> 为集合的元素定义存放的数据类型
list<String>
list 不写泛型 默认 List<Object>
遍历集合
//集合创建
List list=new ArrayList<>();
list.add("辽宁省");
list.add(60);
list.add("hello");
list.add("沈阳");
list.add(false);
list.add(12.5);
System.out.println(list);
//遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
list集合的俩种实现类
1、ArrayList::基于数组实现的集合类(底层是数组)是有下标的(索引)
特点:是一种 线性 的集合,
插入删除数据较 慢,
但是因为有索引值,所以查询比较 快
ArrayList关于自动扩容
1、初始容量为10个元素,
2、每次扩容量为原来的1.5倍
2、LinkedList:是基于链表实现的集合类(包含指针)
特点:是一种 非线性 的集合,
插入删除数据 较快,只需要改变指针的指向对象即可 。
查询数据较 慢
实现类
1、面向接口 (jdk7之前List<String> list1=new ArrayList<String>();)
List<String> list1=new ArrayList<>();
List<String> list3 =new LinkedList<>();
2、类的实例化
ArrayList<String> list2=new ArrayList<>();
LinkedList<String> list4=new LinkedList<>();
ArrayList构造方法
ArrayList 变量名 = new ArrayList();
ArrayList 变量名 =new ArrayList(int capacity);自定义集合容量
ArrayList 变量名 =new ArrayList(Collection c);构造
set集合
用来包含一组无序无重复的对象
无序:元素存入顺序和集合内存储的顺序不同
无重复:不允许出现重复对象,通过equals方法去比较
1、hashSet
规则hash(散列函数)算法
HashSet<String> hs =new HashSet<>();
hs.add("张三");
hs.add("李四");
hs.add("王五");
System.out.println(hs);
//
输出
[李四, 张三, 王五]
hash自己的排序方法去自动排序
2、treeSet
红黑树规则
Iterator迭代器
用处:遍历集合数据 hashSet hashMap
被collection接口继承
HashSet<String> hs =new HashSet<>();
hs.add("张三");
hs.add("李四");
hs.add("王五");
//获取迭代器
Iterator<String> it =hs.iterator();
while (it.hasNext()) {
String s = (String) it.next();//取出元素
System.out.println(s);
}
输出:
李四
张三
王五
用法:
1、it.hasNext():
判断游标 右边 是否有元素
如果有元素返回true 否则返回false
2、it.Next():
返回 游标 右边 的元素,
并将游标 移动 到下一位置
Map接口
Map内存储的是 键 / 值对,成对的对象组,通过 键 查找 值
-
key唯一且不重复 value则无所谓
HashMap实现类:HashMap<Integer, String> hm=new HashMap<>();
遍历map:
keySet:返回映射中包含的键set 视图 把map中的key
HashMap<Integer, String> hm1=new HashMap<>();
hm1.put(2004,"雅典奥运");
hm1.put(2005,"雅典");
hm1.put(2006,"奥运");
HashMap<Integer, String> hm2=new HashMap<>();
hm2.put(2000, "悉尼");
hm2.putAll(hm1);
Set<Integer> set =hm2.keySet();
// System.out.println(set);
//获取迭代器
Iterator<Integer> it =set.iterator();
while (it.hasNext()) {
Integer key = (Integer) it.next();
// System.out.println(key);
String value =hm2.get(key);
System.out.println("集合中:key:"+key+" value:"+value);
}
输出
集合中:key:2000 value:悉尼
集合中:key:2004 value:雅典奥运
集合中:key:2005 value:雅典
集合中:key:2006 value:奥运
HashMap类
构造:
1、初始容量:16 加载因子:默认0.75