62,615
社区成员
发帖
与我相关
我的任务
分享
package book;
/****
* 实体类
* @author founder
*/
public class Book {
private String bookSN; //图书编号
private int sellCount; //销量
public String getBookSN() {
return bookSN;
}
public void setBookSN(String bookSN) {
this.bookSN = bookSN;
}
public int getSellCount() {
return sellCount;
}
public void setSellCount(int sellCount) {
this.sellCount = sellCount;
}
}
package book;
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
/**
* 针对集合的帮助类
* @author founder
*/
public class ComparatorBook implements Comparator {
/* (non-Javadoc)
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object arg0, Object arg1) {
Book book0=(Book)arg0;
Book book1=(Book)arg1;
if(book0.getSellCount()<book1.getSellCount()){
return 0;
}else{
return 1;
}
}
}
package book;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* 操作类
* @author founder
*/
public class BookDAO {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Book book1 = new Book();
book1.setSellCount(101);
Book book2 = new Book();
book2.setSellCount(102);
Book book3 = new Book();
book3.setSellCount(103);
Book book4 = new Book();
book4.setSellCount(100);
List bookList = new ArrayList();
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
bookList.add(book4);
BookDAO bookDAO = new BookDAO();
bookDAO.ListSortSellCount(bookList);
}
***************************************************************************
* 对销量升序
*
* @return
*/
public List ListSortSellCount(List bookList) {
List<Book> linkedList = new LinkedList<Book>();
int temp = 0;
// for (Object object : bookList) {
// Book book = (Book) object;
// int sellCount = book.getSellCount();
// if (sellCount > temp) {
// temp = sellCount;
// linkedList.add(book);
// }
// }
System.out.println("第一种集合排序方案:");
// 调用数组的排序和集合的排序方法
int[] score = new int[bookList.size()];
for (int i = 0; i < bookList.size(); i++) {
Book book = (Book) bookList.get(i);
int sellCount = book.getSellCount();
score[i] = sellCount;
}
Arrays.sort(score); // 排序
for (int index = 0; index < score.length; index++) {
Book book = new Book();
book.setSellCount(score[index]);
linkedList.add(book);
System.out.println(score[index]); //输出结果
}
System.out.println("第二种集合排序方案:");
// 冒泡排序算法: 适合于数组
int[] bookArray= new int[bookList.size()];
for (int i = 0; i < bookList.size(); i++) {
Book book = (Book) bookList.get(i);
int sellCount = book.getSellCount();
bookArray[i] = sellCount;
}
/****
* 冒泡排序核心代码
*/
for (int i = 0; i < bookArray.length - 1; i++) {
for (int j = 0; j < bookArray.length - i - 1; j++) {
if (bookArray[j] > bookArray[j + 1]) {
temp = bookArray[j];
bookArray[j] = bookArray[j + 1];
bookArray[j + 1] = temp;
}
}
}
for (int index = 0; index < bookArray.length; index++) {
Book book = new Book();
book.setSellCount(bookArray[index]);
linkedList.add(book);
System.out.println(bookArray[index]); // 输出结果
}
System.out.println("第三种集合排序方案:");
//第三种方式: 使用Comparator接口的帮助类ComparatorBook来排序
ComparatorBook comparator=new ComparatorBook();
Collections.sort(bookList, comparator);
for (int i = 0; i < bookList.size(); i++) {
Book book=(Book)bookList.get(i);
System.out.println(book.getSellCount());
}
// for (Book book : linkedList) {
// System.out.println(book.getSellCount());
// }
return bookList;
}
}
package book;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
public class BookDAO {
/**
* 测试用例
*/
public static void main(String[] args) {
Book book1 = new Book();
book1.setBookSN("SN1");
book1.setSellCount(101);
Book book2 = new Book();
book2.setBookSN("SN2");
book2.setSellCount(102);
Book book3 = new Book();
book3.setBookSN("SN3");
book3.setSellCount(103);
Book book4 = new Book();
book4.setBookSN("SN4");
book4.setSellCount(100);
List<Book> bookList = new ArrayList<Book>();
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
bookList.add(book4);
BookDAO bookDAO = new BookDAO();
List<Book> sorted = bookDAO.ListSortSellCount(bookList);
for(Book book : sorted){
System.out.println(book.getBookSN()+"\t"+book.getSellCount());
}
}
/***************************************************************************
* 对销量升序
*/
public List<Book> ListSortSellCount(List<Book> bookList) {
ComparatorBook comparator=new ComparatorBook();
List<Book> result = null;
result = bubbleSort(bookList);
result = bubbleSort(bookList,comparator);
result = selectionSort(bookList,comparator);
result = jdkSort(bookList,comparator);
return result;
}
public List<Book> bubbleSort(List<Book> bookList){
System.out.println("冒泡排序算法(不用比较器升序):");
Book[] array = bookList.toArray(new Book[bookList.size()]);
Book temp = null;
for(int i=0;i<array.length;i++){
for(int j=array.length-1;j>i;j--){
if(array[j-1].getSellCount()>array[j].getSellCount()){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
ListIterator<Book> i = bookList.listIterator();
for (int j=0; j<array.length; j++) {
i.next();
i.set(array[j]);
}
return bookList;
}
public List<Book> bubbleSort(List<Book> bookList,ComparatorBook comparator){
System.out.println("冒泡排序算法:");
Book[] array = bookList.toArray(new Book[bookList.size()]);
Book temp = null;
for(int i=0;i<array.length;i++){
for(int j=array.length-1;j>i;j--){
if(comparator.compare(array[j-1], array[j])>0){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
ListIterator<Book> i = bookList.listIterator();
for (int j=0; j<array.length; j++) {
i.next();
i.set(array[j]);
}
return bookList;
}
public List<Book> selectionSort(List<Book> bookList,ComparatorBook comparator){
System.out.println("选择排序算法:");
Book[] array = bookList.toArray(new Book[bookList.size()]);
int index = 0;
Book temp = null;
for(int i=0;i<array.length;i++){
index = i;
for(int j=i+1;j<array.length;j++){
if(comparator.compare(array[index], array[j])>0){
index = j;
}
}
temp = array[index];
array[index] = array[i];
array[i] = temp;
}
ListIterator<Book> i = bookList.listIterator();
for (int j=0; j<array.length; j++) {
i.next();
i.set(array[j]);
}
return bookList;
}
public List<Book> jdkSort(List<Book> bookList,ComparatorBook comparator){
System.out.println("JDK 排序算法:");
Collections.sort(bookList, comparator);
return bookList;
}
}
package book;
import java.util.Comparator;
/**
* 比较器类,比较两个参数的大小。一般用于集合或者Map的排序。
*/
public class ComparatorBook implements Comparator<Book> {
public int compare(Book o1, Book o2) {
if(o1==null)return -1;
if(o2==null)return 1;
if(o1==o2)return 0;
if(o1.getSellCount()>o2.getSellCount()){
return 1;
}
if(o2.getSellCount()==o1.getSellCount()){
return 0;
}
return -1;
}
}