您的位置:首页 > 编程语言 > Java开发

java 泛型 集合嵌套 Collections中的sort(list)方法

2017-12-19 21:32 633 查看
一、重点内容泛型

1.增加了代码安全性

* 2.省去了强制转换的麻烦(向下转型)

*/

public class Demo01 {
public static void main(String[] args) {
// fun1();
// fun2();
// fun3();

// 泛型类
// 泛型类是在创建对象的时候 给泛型赋类型
Worker<String> worker = new Worker<>();
worker.setT("haha");
String t = worker.getT();
System.out.println(worker.getT());
}

private static void fun3() {
// 泛型的由来
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("跳跳", "15"));
list.add(new Student("好好", "15"));
list.add(new Student("带带", "15"));

// 泛型可以将 运行时的错误 转到编译器
//      Worker worker  = (Worker)list.iterator().next();
//      worker.work();
}

private static void fun2() {
// 需求:集合中保存了 3个学生对象 迭代器遍历(使用泛型)
// 在JDK1.7 菱形泛型
// 后面的泛型 可以不写 如果不写 默认和声明时泛型一致
// 如果前后泛型都写 必须保存一致
ArrayList<Student> list1 = new ArrayList<>();
list1.add(new Student("跳跳", "15"));
list1.add(new Student("好好", "15"));
list1.add(new Student("带带", "15"));
ListIterator<Student> listIterator = list1.listIterator();
while (listIterator.hasNext()) {
Student next = listIterator.next();
System.out.println(next);
}
}

/*
* 集合保存泛型是字符串的
*/
private static void fun1() {
// 声明一个集合 保存a b c d 迭代器遍历
// 泛型 声明 集合中保存的元素是什么类型的
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
ListIterator<String> listIterator = list.listIterator();
// 正向遍历
//      while (listIterator.hasNext()) {
//          String next = listIterator.next();
//          System.out.println(next);
//      }
// 逆向遍历
// 判断前一个元素是否有值
while (li
9f76
stIterator.hasPrevious()) {
// 取出前一个元素
String previous = listIterator.previous();
System.out.println(previous);
}
}
}


二、集合嵌套

public class Demo05 {
public static void main(String[] args) {
// 需求:一个java学科 有2个班 每个班里有2个学生
// 用集合来表示
// 我有一个通讯录 26个组
// a b ...z
// 每组9人

// 创建一个学科的集合
// 学科中装了两个小集合,
// 小集合里面装了学生
ArrayList<ArrayList<Student>> subjects = new ArrayList<>();
// 创建小集合
ArrayList<Student> classes1 = new ArrayList<>();
// 把学生装进小集合
classes1.add(new Student("明明", "15"));
classes1.add(new Student("天天", "16"));

// 创建班2
ArrayList<Student> classes2 = new ArrayList<>();
// 把学生装进小集合
classes2.add(new Student("发发", "19"));
classes2.add(new Student("财财", "18"));

// 把班放进学科
subjects.add(classes1);
subjects.add(classes2);
// 遍历打印
// 第一层把班找出来
for (ArrayList<Student> classes : subjects) {
// 第二层 把班里学生找出来
for (Student student : classes) {
System.out.println(student);
}
System.out.println();
}
}
}


三、Collections中的sort(list)方法

这个方法是系统提供的排序方法

* 但是 按什么去排序 系统不知道你要怎么排序

* 这时系统给你提供一个接口 让你去实现这个接口

* 接口中 你要写排序规则(回调思想)

*

* 集合中盛放的什么对象 就让该对象去实现这个接口(排谁谁实现)

*

* 使用Collections中的sort方法排序步骤

* 1.让集合中被排序的对象 的类 去实现Comparable接口

* 2.实现接口中 的抽象方法(排序是按什么规则的方法)

* 3.编写排序规则

* 4.调用Collections.sort测试

ublic class Demo04 {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("a","15"));
students.add(new Student("c","18"));
students.add(new Student("d","14"));
students.add(new Student("e","16"));
students.add(new Student("f","17"));
// 调用系统的排序方法
// (底层调用了你实现接口中的排序规则方法)
Collections.sort(students);
System.out.println(students);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: