package cdstore;import org.apache.commons.beanutils.BeanUtils;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class StoreManagerDelegate implements java.io.Serializable { private static int index = 0; private List list = new ArrayList();
private Map categories = new TreeMap();
private Map cdMap = new HashMap();
private String sortByProperty = "title"; private transient final Comparator propertyAscendingComparator = new Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1,StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property1.toLowerCase().compareTo(property2.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
}; private transient final Comparator propertyDescendingComparator = new
Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1, StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property2.toLowerCase().compareTo(property1.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
}; private List countryCategory = new ArrayList();
private List rAndBCategory = new ArrayList();
private List rockCategory = new ArrayList(); { //实例初始化器用于生成一些示例数据
countryCategory.add("兰草");
countryCategory.add("西方古典音乐");
countryCategory.add("西方流行音乐");
categories.put("西部乡村音乐", countryCategory); rockCategory.add("现代音乐");
rockCategory.add("古典音乐");
categories.put("摇滚", rockCategory); rAndBCategory.add("灵魂音乐");
rAndBCategory.add("击打乐");
rAndBCategory.add("底特律黑人音乐");
categories.put("蓝调音乐", rAndBCategory); addCD(new CD("Staying Alive", "Beegees", 15.89f, "西部乡村音乐"));
addCD(new CD("Born in USA", "Bruce", 19.89f, "摇滚"));
addCD(new CD("Love Bites", "Def Lappard", 12.89f, "摇滚"));
addCD(new CD("Great Big Sea", "Great Big Sea", 8.39f, "摇滚"));
addCD(new CD("1984", "Van Halen", 8.39f, "摇滚"));
addCD(new CD("Dancing Queen", "ABBA", 8.39f, "摇滚"));
addCD(new CD("Love Gun", "KISS", 8.39f, "摇滚"));
addCD(new CD("Daddy Cool", "BoneyM", 8.39f, "摇滚"));
addCD(new CD("I missed the bus", "Skank and Pickle", 8.39f, "摇滚"));
addCD(new CD("Is My Life", "Dr. Alban", 8.39f, "西部乡村音乐"));
addCD(new CD("Every Breath You Take", "Police", 15.89f, "西部乡村音乐"));
} public CD getCDById(Long id) {
return (CD) cdMap.get(id);
} public List getCategories() {
return new ArrayList(categories.keySet());
} public List getSubcategories(String category) {
return (List) categories.get(category);
} public void addCD(CD cd) {
cd.setId(new Long(index++));
list.add(cd);
cdMap.put(cd.getId(), cd);
} public List findArtistAsc() {
sortByProperty = "artist";
sort(propertyAscendingComparator);
return list;
} public List findArtistDec() {
sortByProperty = "artist";
sort(propertyDescendingComparator);
return list;
} public List findTitleAsc() { // 返回所有的数据
sortByProperty = "title";
sort(propertyAscendingComparator);
return list;
} public List findTitleDec() {
sortByProperty = "title";
sort(propertyDescendingComparator);
return list;
} public CD readCD(int id) {
CD cd = (CD)this.list.get(id);
return cd;
} public void updateCD(CD cd) {
//
} private void sort(Comparator comparator) {
Collections.sort(list, comparator);
}
}
JSF 技术:::::问题:
该方法findTitleAsc() 是返回一个List , 这个对象看不懂,他在这有什么用,还有它里面的方法是那掉的,怎么会返回数据呢? 哈哈 对不起啊 一点也看不东这, 请大家给解释一下,
private transient final Comparator propertyAscendingComparator = new Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1,StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property1.toLowerCase().compareTo(property2.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
};
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;public class StoreManagerDelegate implements java.io.Serializable { private static int index = 0; private List list = new ArrayList();
private Map categories = new TreeMap();
private Map cdMap = new HashMap();
private String sortByProperty = "title"; private transient final Comparator propertyAscendingComparator = new Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1,StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property1.toLowerCase().compareTo(property2.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
}; private transient final Comparator propertyDescendingComparator = new
Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1, StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property2.toLowerCase().compareTo(property1.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
}; private List countryCategory = new ArrayList();
private List rAndBCategory = new ArrayList();
private List rockCategory = new ArrayList(); { //实例初始化器用于生成一些示例数据
countryCategory.add("兰草");
countryCategory.add("西方古典音乐");
countryCategory.add("西方流行音乐");
categories.put("西部乡村音乐", countryCategory); rockCategory.add("现代音乐");
rockCategory.add("古典音乐");
categories.put("摇滚", rockCategory); rAndBCategory.add("灵魂音乐");
rAndBCategory.add("击打乐");
rAndBCategory.add("底特律黑人音乐");
categories.put("蓝调音乐", rAndBCategory); addCD(new CD("Staying Alive", "Beegees", 15.89f, "西部乡村音乐"));
addCD(new CD("Born in USA", "Bruce", 19.89f, "摇滚"));
addCD(new CD("Love Bites", "Def Lappard", 12.89f, "摇滚"));
addCD(new CD("Great Big Sea", "Great Big Sea", 8.39f, "摇滚"));
addCD(new CD("1984", "Van Halen", 8.39f, "摇滚"));
addCD(new CD("Dancing Queen", "ABBA", 8.39f, "摇滚"));
addCD(new CD("Love Gun", "KISS", 8.39f, "摇滚"));
addCD(new CD("Daddy Cool", "BoneyM", 8.39f, "摇滚"));
addCD(new CD("I missed the bus", "Skank and Pickle", 8.39f, "摇滚"));
addCD(new CD("Is My Life", "Dr. Alban", 8.39f, "西部乡村音乐"));
addCD(new CD("Every Breath You Take", "Police", 15.89f, "西部乡村音乐"));
} public CD getCDById(Long id) {
return (CD) cdMap.get(id);
} public List getCategories() {
return new ArrayList(categories.keySet());
} public List getSubcategories(String category) {
return (List) categories.get(category);
} public void addCD(CD cd) {
cd.setId(new Long(index++));
list.add(cd);
cdMap.put(cd.getId(), cd);
} public List findArtistAsc() {
sortByProperty = "artist";
sort(propertyAscendingComparator);
return list;
} public List findArtistDec() {
sortByProperty = "artist";
sort(propertyDescendingComparator);
return list;
} public List findTitleAsc() { // 返回所有的数据
sortByProperty = "title";
sort(propertyAscendingComparator);
return list;
} public List findTitleDec() {
sortByProperty = "title";
sort(propertyDescendingComparator);
return list;
} public CD readCD(int id) {
CD cd = (CD)this.list.get(id);
return cd;
} public void updateCD(CD cd) {
//
} private void sort(Comparator comparator) {
Collections.sort(list, comparator);
}
}
JSF 技术:::::问题:
该方法findTitleAsc() 是返回一个List , 这个对象看不懂,他在这有什么用,还有它里面的方法是那掉的,怎么会返回数据呢? 哈哈 对不起啊 一点也看不东这, 请大家给解释一下,
private transient final Comparator propertyAscendingComparator = new Comparator() {
public int compare(Object object1, Object object2) {
try {
String property1 = BeanUtils.getProperty(object1,StoreManagerDelegate.this.sortByProperty);
String property2 = BeanUtils.getProperty(object2, StoreManagerDelegate.this.sortByProperty);
return property1.toLowerCase().compareTo(property2.toLowerCase());
}
catch (Exception e) {
return 0;
}
}
};
String property1 = BeanUtils.getPropert(object1,StoreManagerDelegate.this.sortByProperty);StoreManagerDelegate.this.sortByProperty表示在StoreManagerDelegate类中定义的sortByProperty表示的值.在object1对象中,取名字为StoreManagerDelegate.this.sortByProperty提供的属性值,再赋给property1 .对object1,object2比较字符串大小
Collections.sort(list, comparator);
}
}
comparator实例的public int compare(Object o1,Object o2)方法比较o1,o2在第一个参数集合list的先后顺序 public List findTitleAsc() { // 返回所有的数据
sortByProperty = "title"; //设置propertyAscendingComparator实例的compare(Object o1,Object o2)方法比较 o1,o2的哪个属性
sort(propertyAscendingComparator);
return list; //返回排序后的list
}