0
それは非常に難しいので、一度コンパレータでソートされたリストを再びソートすることはできませんでしたが、これは配列の値をソートする//
蛇腹ALLべき常にTOPJava |配列内の値の変化を伴う配列値に基づくソートリストの繰り返し配列
- //上の1 SortTechのmainList ALLをソートする//その後取られた場合、B、A、C、D、E、F、G
- // 1が今撮影されたときに4が取られる //ソートされるSortTechのメインリストALL、B、E、A、C、D、F、G
- //今は1,4 6,5を取得// sortTechのmainListをソートするALL、G、F、A、B、C、D、E
- // 6,5が取得され、-1が取り込まれた後、// SortTechのmainListあなたのコンパレータの別のクラスを作成し、A、B、C、D、E、F、G
package com.test;
import java.util.ArrayList;
import java.util.List;
public class SortTech {
private long id;
private String name ;
public static void main(String[] args) {
List<SortTech> mainList = new ArrayList<>();
SortTech S1 = new SortTech();
S1.setName("ALL");
S1.setId(-1);
mainList.add(S1);
SortTech S2 = new SortTech();
S2.setName("A");
S2.setId(0);
mainList.add(S2);
SortTech S3 = new SortTech();
S3.setName("B");
S3.setId(1);
mainList.add(S3);
SortTech S4 = new SortTech();
S4.setName("C");
S4.setId(2);
mainList.add(S4);
SortTech S5 = new SortTech();
S5.setName("D");
S5.setId(3);
mainList.add(S5);
SortTech S6 = new SortTech();
S6.setName("E");
S6.setId(4);
mainList.add(S6);
SortTech S7 = new SortTech();
S7.setName("F");
S7.setId(5);
mainList.add(S7);
SortTech S8 = new SortTech();
S8.setName("G");
S8.setId(6);
mainList.add(S8);
/* //tried with comparator but it give unmodifiable list in return so could not modify any further
* Collections.sort(mainList, new Comparator<SortTech>() {
public int compare(SortTech t1, SortTech t2) {
if (t1.getName().equals("ALL"))
return -1;
if (t2.getName().equals("ALL"))
return 1;
return t2.getName().compareTo(t2.getName());
}
});*/
//ALL should always on TOP
//if 1 is taken
Long[] taken = new Long[]{(long) 1};
//mainList of SortTech to be sorted as ALL , B , A , C, D, E, F ,G
//system out
//1 was taken now 4 is taken
taken = new Long[]{(long) 1, (long) (4)};
//mainList of SortTech to be sorted as ALL, B , E, A , C, D, F ,G
//system out
//now 1,4 are dropped and 6,5 taken
taken = new Long[]{(long) 6, (long) (5)};
//mainList of SortTech to be sorted as ALL, G, F, A , B, C, D, E
//system out
//now 6,5 was taken now -1 is taken
taken = new Long[]{(long) 6, (long) (5), (long) (-1)};
//mainList of SortTech to be sorted as ALL, A , B, C, D, E , F, G
//system out
}
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
}
サイドノートでは、配列にアルファベットを書いたり、文字列を書くことができ、idと一致するインデックスを使って各文字にアクセスできます。 char {]アルファベット= new char [] {'A'、 'B'、 'C'、 'D'、 'E' ...}; ' 'for(int i = 0; i < (i); '' SortTech s = new SortTech(); ' ' S.setName(アルファベット[i]); ' ' S.setId(i); ' ' mainList.add(s) ; '}' – Underbalanced
返信、A、B、C、0,1,2のための@Underbalancedありがとうございました。リンゴ、グーグル、または323,456のようなものがあります。ここでは長い配列とベース長い配列値では、オブジェクトのリストをソートする必要があります – djCode