1.关系图主要是
集合Collection 抽象接口——实际开发中需要一个能随时改变的数组
- 定义集合的相关操作
-
list 抽象接口 列表 数组(特点:有序 可重复)
-
ArrayList
-
LinkedArrayList
-
Set 抽象接口“集合” 特点:无序 不重复
-
(SortSet)HashSet
- Collection与数组的区别
- 数组存储多个对象
- 弊端:数组的长度不可变,内容可变
一些基本方法
先是Collection的方法 代码
接下来是比较重要的遍历
以上是Collection的方法 只要是其子类 皆可使用
接下来是ArrayList LinkedArrayList的学习
开始代码
// ArrayList score = new ArrayList<>();
// score.add(2);
// score.add(3);//在末尾添加
// score.add(0,2); //在指定位置插入
// System.out.println(score);
//
// //访问指定元素
// System.out.println(score.get(2));
// System.out.println("=================");
// //修改一个元素
// score.set(0,1);
// System.out.println(score);
//
// //删除
// score.remove(0);//删除指定位置的元素
// score.remove((Integer)2);//删除指定的对象
// score.clear();//删除所有 清空
// System.out.println(score);
//
// ArrayList a1 = new ArrayList<>();
// a1.add(1);
// a1.add(2);
// a1.add(3);
// //将一个集合里的内容添加到当前集合
// score.addAll(a1);
// System.out.println(score);
//
// ArrayList a2 = new ArrayList<>();
// a2.add(1);
// a2.add(2);
// //取两个集合的交集
// score.retainAll(a2);
// System.out.println(score);
//
// //访问某个对象在集合里的索引
// ArrayList a4 = new ArrayList<>();
// a4.add(1);
// a4.add(2);
// a4.add(2);
// a4.add(1);
// System.out.println(a4.indexOf(1)); //第一次出出现的位置
// System.out.println(a4.lastIndexOf(1)); //最后一次出出现的位置
// System.out.println(a4.indexOf(3));
//
// //将ArrayList转换为普通数组
// Integer[] objects = new Integer[a4.size()];
// a4.toArray(objects);
// System.out.println(objects);
// for (Integer i:objects){
// System.out.println(i);
// }
//
// Iterator iterator1 = a4.iterator();
// while (iterator1.hasNext()){
// System.out.println(iterator1.next());
// }
//
// // Object[] objects1 = new Object[];
//
// //删除某个范围内的对象
// System.out.println("----------------");
// //
// System.out.println( a4.subList(1,1));
/
// ArrayList nums = new ArrayList<>();
// nums.add(1);
// nums.add(2);
// nums.add(3);
// nums.add(4);
// for (Integer ele:nums){
// if (ele %2 == 0){
// nums.remove(ele);
// }
// }
// for (int i = 0; i < nums.size(); i++) {
// Integer obj = nums.get(i);
// System.out.println("-------------------");
// System.out.println(nums);
// if (obj %2 == 0){
// nums.remove(i);
// i–;
// }
//
// }
// System.out.println(nums);
//1.使用方式:定义一个类实现接口
// ArrayClass ac = new ArrayClass();
// int[] num = {1,2,3,4,5,6};
// GSClass gc = new GSClass();
// ac.test(num,gc);
//
// //2,使用匿名类
// ArrayClass ac = new ArrayClass();
// int[] num = {1,2,3,4,5,6};
// ac.test(num,new Show(){
// @Override
// public void customShow(int element){
// System.out.println(element);
// }
// });
// //3,使用匿名类
// ArrayClass ac = new ArrayClass();
// int[] num = {1,2,3,4,5,6};
// ac.test(num,(int element) -> {
// System.out.println(element);
// });
//4.如果只有一个参数 参数的类型可以省略
// ArrayClass ac = new ArrayClass();
// int[] num = {1,2,3,4,5,6};
// ac.test(num,element -> {
// System.out.println(element);
// });
//5.如果代码块里只有一行语句 大括号可以省略
// ArrayClass ac = new ArrayClass();
// int[] num = {1,2,3,4,5,6};
// ac.test(num,element -> System.out.println(element));
// Person zs = new Person(“张三”,30);
// Person ls = new Person(“李四”,33);
// Person zy = new Person(“张一”,29);
// Person we = new Person(“王二”,30);
//
// ArrayList al = new ArrayList<>();
// al.add(zs);
// al.add(ls);
// al.add(zy);
// al.add(we);
//
// int countAge = 0;
// int countName = 0;
//
// for (Person p:al){
// if (p.age > 30||p.age == 30){
// countAge++;
// }
// if (p.name.contains(“张”) ){
// countName++;
// }
// }
// System.out.println(“超过三十的人数为:”+countAge+“姓氏为张的人数为:”+countName);
//
// ArrayList a1 = new ArrayList<>();
// a1.add(1);
// a1.add(5);
// a1.add(3);
// a1.add(4);
// a1.sort(new Comparator() {
// @Override
// public int compare(Integer integer, Integer t1) {
// int i = 01 > 02 ? 1 : -1;
// System.out.println(01+":"+02);
// return i;
// }
// });
// a1.sort(new GSCompare());
// System.out.println(a1);
// a1.sort(new Comparator() {
// @Override
// public int compare(Integer integer, Integer t1) {
//
// return integer-t1;
// }
// });
//
// a1.sort((Integer i1,Integer i2) -> {
// return i1 - i2;
// });
// System.out.println(a1);
List<Person> al = new ArrayList<>();
Person zs = new Person("张三",37);
Person ls = new Person("李四",33);
Person zy = new Person("张一",29);
Person we = new Person("王二",30);
al.add(zs);
al.add(ls);
al.add(zy);
al.add(we);
}
}
class GSCompare implements Comparator{
//什么时候需要自己手动创建比较器
//如果系统默认的方法不能完成我们的比较
//参与比较的对象
@Override
public int compare(Object o, Object t1) {
int mo = (int)o;
int mti = (int)t1;
return mo-mti;
}
}
//Lambda表达式
// nums.removeIf(ele -> ele %2 == 0);
//闭包 把函数作为一个方法的参数
class ArrayClass{
public void test(int[] target,Show s){
for (int element:target){
s.customShow(element);
}
}
}
//必须是接口 这个接口里面只有一个方法
interface Show{
void customShow(int element);
}
class GSClass implements Show{
@Override
public void customShow(int element) {
System.out.println(element);
}
}