第九天
不知道为什么标题不能加入时间了,以后日期就写在内容中了。
今日学习的集合,上笔记:
集合框架:
1.数组与集合的区别:
集合没有固定长度,数组有
集合可以存入映射对象(键值对)
2.集合主要类型:Set(集),List(列表),Queue(队列),Map(映射)
3.集合存放的是对象的引用而非对象本身,集合不能存储基本数据类型
4.ArrayList(List子类):大小可变,自动增长,可以动态增加,减少元素
5.不同的集合 增删的方法不同,但是查都可以通过迭代器查询。
6.数组与集合可以互相转化(可以通过Arrays,Collections操作)
7.添加泛型后只能在集合中存入泛型指定内容,否则可以存入任意内容
今日题目:
1.编写一个Book类,该类至少有name和price两个属性。
该类要实现Comarable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。
在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。
package java_1216;
public class Book implements Comparable{
String name;
double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public int compareTo(Object o) {
Book b=(Book)o;
return (int)(this.price-b.price);
}
}
package java_1216;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestBook {
public static void main(String[] args) {
List<Book> list=new ArrayList<Book>();
list.add(new Book("果冻",20));
list.add(new Book("旺仔小馒头",10));
Book book=new Book("果冻",20);
Iterator<Book> i=list.iterator();
while (i.hasNext()){
Book book1=i.next();
if (book1.compareTo(book)==0) {
System.out.println(book1.name+"相同");
}
}
}
}
2.编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
package java_1216;
import java.util.*;
public class Demo01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String name;
int score;
Map<String,Integer> map=new HashMap<String,Integer>();
do {
System.out.print("请输入姓名:(输入end结束)");name=sc.next();
System.out.print("请输入分数:");score=sc.nextInt();
map.put(name,score);
}while (!name.equals("end"));
List<Map.Entry<String,Integer>> list=new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, java.lang.Integer> o1, Map.Entry<String, java.lang.Integer> o2) {
return o1.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry<String,Integer> m:list) {
System.out.println(m.getKey()+":"+m.getValue());
}
}
}
3.创建一个list,在list中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
在li4之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
删除wang5的信息
package java_1216;
public class Worker {
String name;
int age;
double price;
public Worker(String name, int age, double price) {
this.name = name;
this.age = age;
this.price = price;
}
}
package java_1216;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo02 {
public static void main(String[] args) {
List list=new ArrayList();
list.add(new Worker("zhang3",18,3000));
list.add(new Worker("li4",25,3500));
list.add(new Worker("wang5",22,3200));
list.add(1,new Worker("zhao6",24,3300));
list.remove(3);
Iterator i =list.iterator();
while (i.hasNext()) {
Worker w= (Worker) i.next();
System.out.println(w.name+" "+w.age+" "+w.price);
}
}
}
呼~真累~