java中的list排序
1. java list 排序
importjava.util.ArrayList;
importjava.util.List;
publicclassApp{
publicstaticvoidmain(String[]args){
List<Integer>list=newArrayList<>();
list.add(85);
list.add(35);
list.add(20);
list.add(60);
list.add(54);
list.sort((x,y)->Integer.compare(x,y));
list.forEach(System.out::println);
}
}
2. java 中 List 怎麼排序呢
Map<String, String> map =new HashMap<String, String>();
java.util.List<String> list=new ArrayList<String>();
map.put("a", "a");
map.put("c", "c");
map.put("b", "b");
list.addAll(map.keySet());
Collections.sort(list);
for (String key : list)
{
System.out.println(map.get(key));
}
直接Copy 到main方法中運行, 是個降序! 升序的話 Collections 這裡面也有的。
樓主 太摳門, 5分都不給!
3. java 怎麼將List裡面數據排序
不好意思,上午只是粗略地看了一下,沒有細致看,現在詳細回答你的提問。
ArrayList底層是用一個長度為10的Object數組實現,不管添加進去什麼類型的數據,都會轉換成Object對象,除非你用很早以前的JDK版本。這樣就好理解了,像你寫的程序arrayList1中add了String和Integer兩種類型的數據,這兩類對象沒有什麼可比性,就像拿打火機和U盤比一個性質。所以,是沒有辦法進行直接排序的。
你要求的是要按ArrayList裡面的第1、2、4數據進行排序,這個可以。
先來arrayList1
四個數據分別是2、"daas"、6、"1",第1、2、4數據即2、「daas」、「1」,我選擇按照String類型進行排序,所以第1個數據2轉換成String類型即可。因為第3個數據6不進行排序,remove就好。這是個題還是個什麼,其實還是留了點活路的,因為後面的(你arrayList234下面)代碼都是往arrayList1中添加的,而且還都是String類型。這也是我選擇String類型進行排序的原因。代碼如下:
List arrayList1 = new ArrayList();
arrayList1.add(2); //0
arrayList1.add("daas"); //1
arrayList1.add(6); //2
arrayList1.add("1"); //3
list.add(arrayList1);
//my code
String convert = String.valueOf(arrayList1.get(0));
arrayList1.remove(2);
arrayList1.remove(0);
arrayList1.add(convert);
/此處為你的arrayList234代碼
Collections.sort(arrayList1);
for(int i = 0; i < arrayList1.size(); i++) {
System.out.println(arrayList1.get(i));
}
結果為:
1
2
3
5
8
daas
因為怕你深挖,強調兩點:
第一點,由結果看出Collections.sort(arrayList1),是以String的ASCII碼進行排序的,為了證明這一點,就要看原代碼,這時你就會發現JDK中String的compareTo方法是個空實現,底層並不是用java寫的,這點沒事,我們可以用一定的方法讓它把特徵暴露出來,然後就可以理解思想。你看我下面寫的小測試程序就會明白。
String a = new String("Z");
String b = new String("A");
System.out.println(a.compareTo(b));
String c = new String("A");
String d = new String("B");
System.out.println(c.compareTo(d));
//看結果,證明String的自然順序比較即比較ASCII值,只是第一步。
//看結果,證明compareTo返回值是後面的ASCII碼減支前面的ASCII碼,第二步。
String e = new String("g");
String f = new String("e");
String h = new String("h");
List<String> list = new ArrayList<String>();
list.add(e);
list.add(f);
list.add(h);
Collections.sort(list);
for(String i : list) {
System.out.println(i);
}
結果為:
25
-1
e
g
h
//證明String的自然排序即ASCII碼從小到大排序,最後一步。
第二點,你的要求是「要按ArrayList裡面的第1、2.4數據進行排序,分別怎麼做啊」,這個問題的描述有問題,或者不詳細,arryList2、arrayList3、arrayList4任何一個裡面一共就add了3個數據,哪來第4個。如果是分別對arrayList234裡面的數據進行排序,兩個選擇,(1)把所有Integer轉換成String類型,再排序,參考arrayList2。(2)運用Integer.valueOf()方法,將內容為數字的String數據轉換成Integer,把原來的remove掉,把內容非數字的String數據remove掉,再排序,桶排序、冒泡排序、快速排序等你隨便選。
講解到這,不管想對哪個list進行排序,你應該都會寫了。
總結:
除非比較ASCII碼,Integer類型和內容為非數字的String類型數據是沒有辦法進行比較的,不管是直接比較,還是間接比較。還是上面那句話,像打火機和U盤沒有可比性一樣,理解這點很重要。
即使用Integer.valueOf()方法對內容為非數字的String類型數據進行轉換沒有用,會報NumberFormatException。說這點意思是如果你想按Integer類型排序,得把所有內容為非數字的String類型數據remove掉。
題外話:這種類型的題我記得上大學的時候有,不知道你是不是學生,今天想來,其實用處真不大,都用泛型,現在寫代碼不用泛型的程序員幾乎是完全不存在了。
祝心情愉快~~
親手打,如果滿意,把分給我吧~~哈哈。。
4. java 怎麼將List裡面數據排序
學生實體類,包含姓名和年齡屬性,
比較時先按姓名升序排序,如果姓名相同則按年齡升序排序。
5. JAVA中list集合的排序
根據字元串的含義,進行對象化,比如,Student,有三個屬性,序號,姓名,分數
注意重寫Student的Compareable介面
然後,List<String>變成List<Student> students=new ArrayList<Student>
然後,遍歷list,算出平均分,放入新的SortList<Student>
列印結果
6. JAVA中list排序問題
compareTo
只是比較2個字元串,不能進行排序
String
s1
=
"abc";
String
s2
=
"abcd";
String
s3
=
"abcdfg";
String
s4
=
"1bcdfg";
String
s5
=
"cdfg";
String
s6="abc";
System.out.println(
s1.compareTo(s2)
);
//
-1
(前面相等,s1長度小1)
System.out.println(
s1.compareTo(s3)
);
//
-3
(前面相等,s1長度小3)
System.out.println(
s1.compareTo(s4)
);
//
48
("a"的ASCII碼是97,"1"的的ASCII碼是49,所以返回48)
System.out.println(
s1.compareTo(s5)
);
//-2
System.out.println(
s1.compareTo(s6)
);
//
0
比較方法其實就是對字元串中的字元逐個比較ASCII
值相減,如果2個字元串是包含關系返回長度差。Collections.sort方法才是對LIST
進行排序的方法。
7. java中兩個list集合如何排序
放到一個list中排zd序就專可以了
List<Article>
list
=
new
ArrayList<Article>();
list.addAll(list1);
list.addAll(list2);
然後2層循屬環就可以了
8. java中list排序
最好是在將日期插入list前排序,即在sql查詢是排序,這樣比較好處理。
另一種方法是構建一個比較類或比較方法,如一樓所述。
9. java怎麼把list進行排序
privateList<Pay>breakfastList=newArrayList<Pay>();
Collections.sort(breakfastList,newComparator<Pay>(){
publicintcompare(Payarg0,Payarg1){
returnarg0.getPayDate().compareTo(arg1.getPayDate());
}
});
10. Java的List怎麼排序啊
問題在於
doubletemp=0.0;
你把temp設置成double型,然後
temp=arr.get(l).doubleValue();
所以你把取得的int類型轉換成了double類型,最後輸出就帶上了.0
你仔細看看你的程序,int類型有的排序後沒有變,有的變x.0了,凡是加上.0的都是它在排序過程中與double類型的數字進行過交換。