day16笔记

  • 格式:pdf
  • 大小:445.21 KB
  • 文档页数:22
System.out.println(list.get(0));//d,集合中的索引为0对应的元素即第一个元素 System.out.println(list);//[d, c, b, a, e],集合输出增加了中括号逗号和空格 }
16.04_集合框架(栈和队列数据结构)(掌握)
栈:
先进后出,如子弹夹装子弹
}
可以通过下面两种方式解决:
APe.crosnotna中in重s方写法eq判u断als是方否法包,重含写,底的层代依码赖为的: 是equals方法,需要在自定义类
@Override public boolean equals(Object obj) { Person p = (Person)obj; return .equals() && this.age == p.age; }
总结:在自定义类中调用contains方法和remove方法不起作用,其底层依赖的都是equals方法当其返回true时,方法才 起作用, 而系统提供的类String里调用却起作用,说明其里面重写了Object类的equals方法
16.03_集合框架(LinkedList的特有功能)(掌握)
案例演示Demo3_LinkedList A:LinkedList类概述 B:LinkedList类特有功能:
public static void demo1() {//加了泛型,能将运行期的错误转换到编译期,
ArrayList<Person> list = new ArrayList<Person>();
//
list.add(110);
//
list.add(true);
list.add(new Person("张三", 23));
队列:
先进先出,如排队,先排的先出
16.05_集合框架(用LinkedList模拟栈数据结构的
1集6合.05并_集测合试框)(掌架握(用) LinkedList模拟栈数据结构的
A:案例演示Demo4_LinkedList
需求:请用LinkedList模拟栈数据结构的集合,并测试 创建一个类将Linked中的方法封装
BPe.rresmono中ve重方写法e判qu断a是ls否方删法除,重,底写层的依代赖码的为也: 是equals方法,需要在自定义类
@Override public boolean equals(Object obj) { Person p = (Person)obj; return .equals() && this.age == p.age; }
ArrayList list = new ArrayList(); list.add(new Person("张三", 23)); list.add(new Person("张三", 23)); list.add(new Person("李四", 24)); list.add(new Person("李四", 24)); list.add(new Person("李四", 24)); list.add(new Person("李四", 24));
public static ArrayList getSingle(ArrayList list) { ArrayList newList = new ArrayList<>(); Iterator it = list.iterator(); while(it.hasNext()) { Object obj = it.next(); if(!newList.contains(obj)) {//说明contains方法没有起作用,那看源码看其底层依赖的是什么 newList.add(obj); } } return newList;
ArrayList newList = getSingle(list); System.out.println(newList);
//list.remove(new Person("张三", 23));//说明remove方法没有起作用,那看源码看其底层依赖的是什么 //System.out.println(list); }
//
System.out.println(list.removeLast());//d
//
System.out.println(list.removeLast());//c
//
System.out.println(list.removeLast());//b
//
ቤተ መጻሕፍቲ ባይዱ
System.out.println(list.removeLast());//a
}
1元6素.02)(_掌集握合)框架(去除ArrayList中重复自定义对象
案例演示Demo2_ArrayList
关于需求:ArrayList去除集合中自定义对象元素的重复值,如人的姓名和年龄相同,就认为是同一个元素不能重复添加, 直接通过创建新集合的方法或者删除元素,都不能解决重复问题: public static void main(String[] args) {
代码演示如下:
public static void main(String[] args) { LinkedList list = new LinkedList(); list.addFirst("a"); list.addFirst("b"); list.addFirst("c"); list.addFirst("d"); list.addLast("e");//dcbae
}
public Object out() {//模拟弹栈 return list.removeLast();//封装removeLast()方法
}
public boolean isEmpty() {//模拟栈结构是否为空 return list.isEmpty();//封装isEmpty()方法
} }
list.add(new Person("李四", 24));
//
list.add(new Person("王五", 25));
Iterator<Person> it = list.iterator();
//System.out.println(list.getFirst());//d //System.out.println(list.getLast());//e //System.out.println(list.removeFirst());//d,移除谁返回谁 //System.out.println(list.removeLast());//e,移除谁返回谁
while(!s.isEmpty()) {//判断栈结构是否为空 System.out.println(s.out());//弹栈
} }
public static void demo1() {//模拟栈结构,先进后出 LinkedList list = new LinkedList();//创建集合对象 list.addLast("a"); list.addLast("b"); list.addLast("c"); list.addLast("d");//abcd
1方6式.01)(_掌集握合)框架(去除ArrayList中重复字符串元素
A:案例演示Demo1_ArrayList
需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)
思路:创建新集合方式,看其是否包含旧集合元素
代码演示如下:
public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); list.add("c"); list.add("c");
C:泛型基本使用:
<>中放的必须是引用数据类型
D:泛型使用注意事项:
前后的泛型必须一致,或者后面的泛型可以省略不写(即JDK1.7的新特性:菱形泛型)
代码演示如下:
public static void main(String[] args) { //demo0(); //demo1();
//int[] arr = new byte[5];//数组要保证前后的数据类型一致 //ArrayList<Object> list = new ArrayList<Person>();//集合的泛型也要保证前后的数据类型一致 //ArrayList<Object> list = new ArrayList<>();//1.7版本的新特性,菱形泛型 ArrayList<Object> list = new ArrayList<>();//泛型最好不要定义成Object,没有意义, list.add("aaa");//因为什么都可以添加,同时<>中放的必须是引用数据类型 list.add(true); }
while(!list.isEmpty()) { System.out.println(list.removeLast());//