day 14
一.集合的第一种遍历
1.将集合转换为数组:(一般不常用)
2.语法::Object[] toArray()
//第一种集合遍历
Collection col = new ArrayList();
col.add("张三");
col.add("李四");
col.add("王五");
//转换为数组
Object[] obj = col.toArray();
for (int i=0;i<obj.length;i++){
System.out.println(obj[i]);
}
二.集合第二种遍历方式
1.将集合转换为迭代器来进行遍历
语法:Iterator iterator()
方法的名称 | 方法的描述 |
---|---|
boolean hasNext() | 判断是否有下一个元素 |
E next() | 返回的迭代器中下一个元素 |
void remove() | 删除迭代器中最后一个元素 |
System.out.println("集合第二种遍历");
Collection col01 = new ArrayList();
col01.add("张三");
col01.add("李四");
col01.add("王五");
//转换为迭代器
Iterator iter = col01.iterator();
//使用while循环
while (iter.hasNext()){
Object obj01 = iter.next();
System.out.println(obj01);
}
三.集合的第三种遍历方式
1.使用增强for循环
2.语法:
for(集合|数组元素的数据类型 变量名 : 需要遍历集合|数组){
变量名 就是每次得到集合|数组中元素
}
3.增强for循环的底层也是使用迭代器来进行循环的
System.out.println("集合第三种遍历");
Collection col02 = new ArrayList();
col02.add("张三");
col02.add("李四");
col02.add("王五");
//Object是col02的数据类型,没有出现,统一为Object,obj02自己命名 col02需要遍历的集合
for (Object obj02:col02){
System.out.println(obj02);
}
四.案例
代码-新闻类
package com.qf.lt.oop02;
import java.text.SimpleDateFormat;
import java.util.Date;
public class News {
private int nid;
private String title;
private String author;
private Date createtime;
public News() {
}
public News(int nid, String title, String author, Date createtime) {
this.nid = nid;
this.title = title;
this.author = author;
this.createtime = createtime;
}
public int getNid() {
return nid;
}
public void setNid(int nid) {
this.nid = nid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
@Override
public String toString() {
return "News{" +
"nid=" + nid +
", title='" + title + '\'' +
", author='" + author + '\'' +
", createtime=" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) +
'}';
}
}
代码-测试
package com.qf.lt.oop02;
import java.util.*;
public class Test {
public static void main(String[] args) {
//实例化集合
Collection col = new ArrayList();
News n1 = new News(101,"快来帮你","张三", new Date());
News n2 = new News(102,"别扭的是否","李四", new Date());
News n3 = new News(10,"v阿瑟东iv的","王五", new Date());
col.add(n1);
col.add(n2);
col.add(n3);
//第一种遍历:数组
Object[] ojb01 = col.toArray();
for (int i=0;i< ojb01.length;i++){
System.out.println(ojb01[i]);
}
//第二钟:迭代器
System.out.println("****************");
Iterator iter = col.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
//第三钟:增强for循环
System.out.println("****************");
for (Object ob:col){
System.out.println(ob);
}
}
}
五.迭代器处理原理
六.List接口
1.概念:List是接口,不能实例化 只能实例化实现类
2.特点:有序的 存的顺序与取的顺序是一样的 可以重复 也是设置null元素
3.实现类:ArrayList LinkedList Vector
4.常用的方法:带索引的方法
方法名称 | 方法描述 |
---|---|
void add(int index, E element) | 在列表指定位置插入元素 |
E get(int index) | 返回列表中指定位置的元素 |
ListIterator listIterator() | 转为迭代器 |
E remove(int index) | 根据索引来删除元素 |
E set(int index, E element) | 根据索引来修改元素 |
package com.qf.lt.oop03;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) {
List li = new ArrayList();
li.add("张三");
li.add("张三丰");
li.add("张学良");
li.add("张三丰");
//使用for循环
for (int i=0;i< li.size();i++){
String s =(String) li.get(i);
if (s.equals("张三")){
li.add("无极");
}
}
System.out.println(li);
//使用ListIterator list迭代器
ListIterator iter = li.listIterator();
while (iter.hasNext()){
String s = (String) iter.next();
if (s.equals("张三")){
iter.add("张无忌");
}
}
System.out.println(li);
//修改元素
li.set(2,"张作霖");
System.out.println(li);
//根据索引移除元素
li.remove(3);
System.out.println(li);
//删除指定元素
li.remove("张三丰");
System.out.println(li);
}
}
七.第四种遍历方法(有序 有索引)
package com.qf.lt.work01;
import java.sql.Array;
import java.util.*;
public class Work01 {
public static void main(String[] args) {
//实例化对象
Student stu1= new Student("张三",15,'男');
Student stu2= new Student("李四",13,'女');
Student stu3= new Student("王五",25,'男');
List li=new LinkedList();
li.add(stu1);
li.add(stu2);
li.add(stu3);
for (int i=0;i< li.size();i++){
//通过索引来获取元素
Object obj = li.get(i);
System.out.println(obj);
}
}
}
八.案例
package com.qf.lt.work01;
import java.sql.Array;
import java.util.*;
public class Work01 {
public static void main(String[] args) {
//实例化对象
Student stu1= new Student("张三",15,'男');
Student stu2= new Student("李四",13,'女');
Student stu3= new Student("王五",25,'男');
List li=new LinkedList();
li.add(stu1);
li.add(stu2);
li.add(stu3);
//记录索引
int index = 0;
int age=0;
for (int i=0;i< li.size();i++){
//通过索引来获取元素
Object obj = li.get(i);
Student st = (Student) obj;
if (age< st.getAge()){
age= st.getAge();
index = i;
}
}
((Student)li.get(index)).setName("小猪佩奇");
System.out.println(li);
}
}
九.ArrayList
1.ArrayList是List接口的实现类
2.ArrayList底层是以数组的方式进行存储的 特点:查询快 增删慢
3.此实现不是同步的 多线程中不安全
4.分析
十. LinkedList
1.是接口List的实现类
2.以链表的方式来进行存储,特点:查询慢 增加删除快
3.此实现不是同步的 多线程中不安全
4.分析
常用方法:
方法名称 | 方法描述 |
---|---|
public void addFirst(E e) | 将指定元素插入此列表的开头 |
public void addLast(E e) | 将指定元素添加到此列表的结尾 |
public E getFirst() | 返回此列表的第一个元素 |
public E getLast() | 返回此列表的最后一个元素 |
public E removeFirst() | 移除并返回此列表的第一个元素 |
public E removeLast() | 移除并返回此列表的最后一个元素 |
测试类:
package com.qf.lt.oop05;
import java.util.ArrayList;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
arraysList();
linkesList();
}
public static void arraysList(){
ArrayList list = new ArrayList();
for (int i=0;i<=1000000;i++){
list.add(i);
}
long start = System.currentTimeMillis();
for (int i=0;i<=1000000;i++){
list.get(i);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
public static void linkesList(){
LinkedList list = new LinkedList();
for (int i=0;i<=1000000;i++){
list.add(i);
}
long start = System.currentTimeMillis();
for (int i=0;i<=1000000;i++){
list.get(i);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
}
十一.Set
1.Set两个接口的实现类 HashSet TreeSet
2.特点:
元素不能重复
无序 没有顺序
没有索引
package com.qf.lt.oop06;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test {
public static void main(String[] args) {
//实例化
Set set = new HashSet();
set.add("水煮牛蛙");
set.add("清蒸牛蛙");
set.add("牛蛙火锅");
//遍历:增强for循环
for (Object obj:set){
System.out.println(obj);
}
//使用迭代器
System.out.println("******************************");
Iterator iter = set.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
}
}