房地产项目中的一段代码, 室号按从高层到低层排列
现在有 List<String> s = ("10", "20", "30", "40", "B01", "B03", "B02");
我要结果为 40 30 20 10 B01 B02 B03 输出 请问如何编写代码.
现在有 List<String> s = ("10", "20", "30", "40", "B01", "B03", "B02");
我要结果为 40 30 20 10 B01 B02 B03 输出 请问如何编写代码.
http://blog.csdn.net/lcllcl987/archive/2005/06/27/405112.aspx
09 01
09 02
B01 01
B01 02
B02 02package test;import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test {
public static void main(String[] args) {
List<House> houses = new ArrayList<House>();
House r1 = new House("10", "02");
House r2 = new House("09", "02");
House r3 = new House("09", "01");
House r4 = new House("B01", "01");
House r5 = new House("B02", "02");
House r6 = new House("B01", "02");
houses.add(r1);
houses.add(r2);
houses.add(r3);
houses.add(r4);
houses.add(r5);
houses.add(r6);
for(House h: houses)
System.out.println(h.getFloor() + " " +h.getRoom());
Collections.sort(houses, new HouseComparator());
System.out.println();
for(House h: houses)
System.out.println(h.getFloor() + " " +h.getRoom());
}
}
class House{
private String floor;
private String room;
public House(String f, String r) {
this.floor = f;
this.room = r;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
}class HouseComparator implements Comparator {
public int compare(Object o1, Object o2) {
String floor01 = ((House) o1).getFloor();
String floor02 = ((House) o2).getFloor();
int cc = (floor01).compareTo(floor02);
if (cc < 0) {
return 1;
} else if (cc > 0) {
return -1;
} else if (cc == 0) { // 同floor
String number01 = ((House) o1).getRoom();
String number02 = ((House) o2).getRoom();
cc = (number01).compareTo(number02);
return (cc < 0 ? -1 : cc > 0 ? 1 : 0); // 顺序
}
return 0;
}
}
class SortArray
{
public static void Sort(String [] xx)
{
int Ucount,Bcount;
Ucount=0;
Bcount=0;
for(int i=0;i<xx.length;i++)
{
if (xx[i].indexOf("B")!=-1)
{
Bcount++;
}
else
{
Ucount++;
}
}
String [] Uxx = new String[Ucount];
String [] Bxx = new String[Bcount];
for(int i=0,j=0,k=0;i<xx.length;i++)
{
if (xx[i].indexOf("B")!=-1)
{
Bxx[j]=xx[i];
j++;
}
else
{
Uxx[k]=xx[i];
k++;
}
}
sortBegin(Uxx);
sortBegin(Bxx);
printArray(Uxx);
printArray(Bxx);
}
// 打印数组
public static void printArray(String [] yy)
{
for(int n=0;n<yy.length;n++)
System.out.println("第"+n+"="+yy[n]);
}
// 排序数组
public static void sortBegin(String [] mm)
{
String temp=null;
String temp1=null;
for(int n=0;n<mm.length-1;n++)
{
if (mm[n]!=null &&mm[n+1]!=null&& mm[n].indexOf("B")!=-1)
{
temp=mm[n].replace('B','0');
temp1=mm[n+1].replace('B','0');
if(Integer.parseInt(temp)>Integer.parseInt(temp1))
{
temp = mm[n];
mm[n] = mm[n+1];
mm[n+1] =temp;
}
}
else
{
if(Integer.parseInt(mm[n])<Integer.parseInt(mm[n+1]))
{
temp = mm[n];
mm[n] = mm[n+1];
mm[n+1] =temp;
}
}
}
}
public static void main(String [] args)
{
String [] yy = {"01","09","B01","B06","08","B04","04"};
Sort(yy);
}
}
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List<House> houses = new ArrayList<House>();
House r1 = new House("10", "02");
House r2 = new House("09", "02");
House r3 = new House("09", "01");
House r4 = new House("B01", "01");
House r5 = new House("B02", "02");
House r6 = new House("B01", "02");
houses.add(r1);
houses.add(r2);
houses.add(r3);
houses.add(r4);
houses.add(r5);
houses.add(r6); for(House h: houses)
System.out.println(h.getFloor() + " " +h.getRoom());
List<House> houses_s = new ArrayList<House>();
for(int i = houses.size()-1 ; i>=0; i--) {
House h = houses.get(i);
int c = h.getFloor().charAt(0);
if(!(c>='0' && c<='9')) {
houses_s.add(h);
houses.remove(h);
}
}
Collections.sort(houses, new HouseComparator_D());
if(houses_s.size() >0) {
Collections.sort(houses_s, new HouseComparator_U());
}
houses.addAll(houses_s);
System.out.println();
for(House h: houses)
System.out.println(h.getFloor() + " " +h.getRoom());
}
}
class House{
private String floor;
private String room;
public House(String f, String r) {
this.floor = f;
this.room = r;
}
public String getFloor() {
return floor;
}
public void setFloor(String floor) {
this.floor = floor;
}
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
}class HouseComparator_D implements Comparator {
public int compare(Object o1, Object o2) {
String floor01 = ((House) o1).getFloor();
String floor02 = ((House) o2).getFloor();
int cc = (floor01).compareTo(floor02);
if (cc < 0) {
return 1;
} else if (cc > 0) {
return -1;
} else if (cc == 0) { // 同floor
String number01 = ((House) o1).getRoom();
String number02 = ((House) o2).getRoom();
cc = (number01).compareTo(number02);
return (cc < 0 ? -1 : cc > 0 ? 1 : 0); // 顺序
}
return 0;
}
}
class HouseComparator_U implements Comparator {
public int compare(Object o1, Object o2) {
String floor01 = ((House) o1).getFloor();
String floor02 = ((House) o2).getFloor();
int cc = (floor01).compareTo(floor02);
if (cc < 0) {
return -1;
} else if (cc > 0) {
return 1;
} else if (cc == 0) { // 同floor
String number01 = ((House) o1).getRoom();
String number02 = ((House) o2).getRoom();
cc = (number01).compareTo(number02);
return (cc < 0 ? -1 : cc > 0 ? 1 : 0); // 顺序
}
return 0;
}
}