當前位置:首頁 » 編程語言 » java中的list排序

java中的list排序

發布時間: 2022-06-05 10:55:38

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進行排序,你應該都會寫了。


總結:

  1. 除非比較ASCII碼,Integer類型和內容為非數字的String類型數據是沒有辦法進行比較的,不管是直接比較,還是間接比較。還是上面那句話,像打火機和U盤沒有可比性一樣,理解這點很重要。

  2. 即使用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類型的數字進行過交換。

熱點內容
編譯原理已知語言求文法習題 發布:2025-02-09 02:05:15 瀏覽:131
中國首個具有世界影響力的編譯器 發布:2025-02-09 01:56:21 瀏覽:719
tomcat上傳超時 發布:2025-02-09 01:41:42 瀏覽:483
androidactivity豎屏 發布:2025-02-09 01:41:40 瀏覽:377
家庭配置怎麼合理 發布:2025-02-09 01:36:14 瀏覽:807
頭條軍事源碼 發布:2025-02-09 01:31:53 瀏覽:997
androidintent視頻 發布:2025-02-09 01:31:43 瀏覽:858
歐姆龍plc密碼如何設置 發布:2025-02-09 01:24:31 瀏覽:687
php支持jpeg 發布:2025-02-09 01:24:22 瀏覽:803
反編譯去注冊碼 發布:2025-02-09 01:19:48 瀏覽:887