黑马程序员技术交流社区
标题:
【记录】代码练习-Collections类
[打印本页]
作者:
Kevin.Kang
时间:
2015-7-20 15:35
标题:
【记录】代码练习-Collections类
Collection和
Collections的区别:
Collection:是单列的顶层接口,有子接口List和Set。
Collections:针对集合操作的工具类,可以对集合进行排序和二分查找。
作者:
Kevin.Kang
时间:
2015-7-20 16:56
package com.kxg.Collections;
import java.util.ArrayList;
import java.util.Collections;
/*
* Collections类的方法:
* public static <T> void sort(List<T> list):排序
* public static <T> int binarySearch(List<? extends T> list):二分查找
* public static <T> T max(Collection<?> coll):最大值
* public static void reverse(List<?> list):反转
* public static void shuffle(List<?> list):随机置换
*/
public class CollectionsDemo {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(30);
arr.add(60);
arr.add(40);
arr.add(10);
arr.add(50);
arr.add(20);
// public static <T> void sort(List<T> list)
Collections.sort(arr);
System.out.println(arr);
// public static <T> int binarySearch(List<? extends T> list)
System.out.println(Collections.binarySearch(arr, 30));
// public static <T> T max(Collection<?> coll)
System.out.println(Collections.max(arr));
// public static void reverse(List<?> list)
Collections.reverse(arr);
System.out.println(arr);
// public static void shuffle(List<?> list)
Collections.shuffle(arr);
System.out.println(arr);
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-20 17:29
本帖最后由 Kevin.Kang 于 2015-7-21 14:58 编辑
对自定义对象进行排序的时候,有两种方式:自然排序,比较器排序
package com.kxg.Collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class CollectionsDemo2 {
public static void main(String[] args) {
ArrayList<Person> arr = new ArrayList<Person>();
Person p1 = new Person("李延旭", 20);
Person p2 = new Person("任兴亚", 23);
Person p3 = new Person("赵磊", 19);
Person p4 = new Person("王澳", 20);
arr.add(p1);
arr.add(p2);
arr.add(p3);
arr.add(p4);
// 自然排序,需要对象实现Comparable接口
Collections.sort(arr);
for (Person p : arr) {
System.out.println(p.getName() + ":" + p.getAge());
}
// 比较器排序
Collections.sort(arr, new Comparator<Person>()
{
@Override
public int compare(Person p1, Person p2) {
int num = p1.getAge() - p2.getAge();
int num2 = num == 0 ? p1.getName().compareTo(p2.getName()) : num;
return num2;
}
});
}
}
复制代码
作者:
18230343363
时间:
2015-7-20 17:34
感觉你学的很好 ,向你学习了
作者:
落叶随尘
时间:
2015-7-20 17:59
你们学的好快!
作者:
fever_ai_my
时间:
2015-7-20 18:04
恩 学习了
作者:
Kevin.Kang
时间:
2015-7-21 15:00
Person类:
package com.kxg.Collections;
public class Person implements Comparable<Person> {// 实现接口
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name=" + name + ", age=" + age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
// 重写compareTo()方法
@Override
public int compareTo(Person p) {
int num = this.age - p.age;
int num2 = num == 0 ? this.name.compareTo(p.name) : num;
return num2;
}
}
复制代码
作者:
18027587106
时间:
2015-7-21 15:43
表示还只学了数组,要不也用数组写个!嘿嘿
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2