集合2
本节课的学习主要讲了这四个方面的知识 知识点已经总结进代码里
代码如下
package com.haina365.day01.day15;
import java.util.*;
/*
List集合有两个实现类 一个是ArrayList 一个是LinkedList
ArrayList底层是数组
LinkedList底层是链表
通常情况是数组查询快 增删改慢 链表查询慢 增删改快
但是需要注意 具体问题具体分析
*/
public class ListTest {
public static void main(String[] args) {
//List集合 有序 可以重复
List list = new LinkedList();
list.add("zhangsan");
list.add(123456);
list.add(444.5);
list.add(true);
list.add('A');
list.add("zhangsan");
System.out.println(list);
//List集合可以通过索引获取对应位置的数据 索引从0开始
System.out.println(list.get(2));
//修改指定索引位置的数据的值
list.set(3,false);
System.out.println(list);
//在指定索引位置处添加一个数据
list.add(1,"lisi");
System.out.println(list);
//当List集合中的数据有重复的时候 Collection中的remove方法只会删除第一个遇到的需要删除的数据
//不会将数据全部删除
list.remove("zhangsan");
list.remove(1);//通过索引删除指定位置的数据
System.out.println(list);
//List集合遍历形式 四种方式
//1 将集合转换为数组进行遍历
Object[] o = list.toArray();
for (Object obj:o){
System.out.print(obj + " ");
}
//2 使用迭代器遍历
Iterator it = list.iterator();
while (it.hasNext()){
Object o1 = it.next();
System.out.print(o1 + " ");
}
//3 直接使用for循环遍历
for (int i = 0;i < list.size();i++){
System.out.print(list.get(i) + " ");
}
//4 for-each遍历
for (Object o1:list){
System.out.print(o1 + " ");
}
System.out.println();
//集合转换为数组 set和list都可以 但是数组只能转换为List集合
//将数组转换为List集合
Integer[] a = {1,2,3,4,5,6};//要想成功使用需要将数组保存元素的类型定义成对象类型
List list1 = Arrays.asList(a);
System.out.println(list1);
}
}
package com.haina365.day01.day15;
import java.util.*;
public class MapTest {
public static void main(String[] args) {
//Map集合:以键值对(key-value)的形式保存数据
//key的值不可以重复 value值可以重复
Map map = new HashMap();
//put方法 用于往map集合中添加数据的
map.put("name", 123);
map.put(12345,true);
map.put(false,'a');
map.put(true,'a');
map.put('Z',345.8);
map.put(555.7,"zhangsan");
System.out.println(map);
//key值相同的重复添加不会报错 但是会用最后一次的添加的数据 将前面的数据覆盖掉
map.put(false,'E');
System.out.println(map);
//get方法是通过key值获取对应的value的值
System.out.println(map.get(true));
//remove方法是通过key的值删除对应value的值
map.remove(true);
System.out.println(map);
//返回集合长度
System.out.println(map.size());
//map.clear();//清空集合中的数据
//map集合的遍历形式 两种方式
//1 将map转化成set
Set mapSet = map.entrySet();
Iterator it = mapSet.iterator();
while (it.hasNext()){
Map.Entry entry = (Map.Entry) it.next();
//getkey获取键值对中key的值
System.out.println("key值为"+entry.getKey());
//getvalue获取键值对中value的值
System.out.println("value值为"+entry.getValue());
}
//2 特殊情况
Map map1 = new HashMap();
for (int i = 0;i < 5;i++){
map1.put("item" + i,"object" + i);
}
for (int i = 0;i < map1.size();i++){
System.out.print(map1.get("item" + i) + " ");
}
}
}
package com.haina365.day01.day15;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//sort排序核心就是compareTo方法 如果返回值是正数 则表示两个对象交换位置
//否则返回负数或0 表示都不变
public class CollectionsTest {
public static void main(String[] args) {
//Collections类是一个提供了一系列操作集合的方法
List list = new ArrayList();
// list.add(1234);
// list.add(43);
// list.add(435);
// list.add(345);
// list.add(5667);
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("songliu");
list.add("sunqi");
System.out.println(list);
//升序排序
Collections.sort(list);
System.out.println(list);
//二分查找法 查到返回所以的位置
System.out.println(Collections.binarySearch(list, "zhangsan"));
//乱序排序
Collections.shuffle(list);
System.out.println(list);
//倒叙排序
Collections.reverse(list);
System.out.println(list);
//最大最小值
System.out.println(Collections.max(list));
System.out.println(Collections.min(list));
}
}
public class GenericTest {
public static void main(String[] args) {
//泛型:控制往集合中添加数据的类型
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
//添加了泛型之后 只能往集合中保存泛型类型的数据
//list.add(123);
Iterator<String> it = list.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
Map<String, Integer> map = new HashMap<>();
}
}
ublic class GenericDemo<T extends Exception> {
public static void main(String[] args) {
//extends 泛型只能写异常类的子类
//设置上限
GenericDemo<? extends RuntimeException> gd =
new GenericDemo<ArrayIndexOutOfBoundsException>();
//设置下限
GenericDemo<? super RuntimeException> gd1 =
new GenericDemo<Exception>();
}
}