第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

排序Java集合

排序Java集合

慕尼黑8549860 2019-07-30 16:08:18
排序Java集合我有一個(gè)Java集合:Collection<CustomObject> list = new ArrayList<CustomObject>();CustomObjectid現(xiàn)在在顯示列表之前有一個(gè)字段我想按此排序這個(gè)集合id。有什么方法可以做到這一點(diǎn)嗎?
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用比較器

List<CustomObject> list = new ArrayList<CustomObject>();Comparator<CustomObject> comparator = new Comparator<CustomObject>() {
    @Override
    public int compare(CustomObject left, CustomObject right) {
        return left.getId() - right.getId(); // use your logic
    }};Collections.sort(list, comparator); // use the comparator as much as u wantSystem.out.println(list);

另外,如果CustomObject實(shí)現(xiàn)Comparable,那么只需使用Collections.sort(list)

使用JDK 8,語(yǔ)法更簡(jiǎn)單。

List<CustomObject> list = getCustomObjectList();Collections.sort(list, (left, right) -> left.getId() - right.getId());System.out.println(list);

更簡(jiǎn)單

List<CustomObject> list = getCustomObjectList();list.sort((left, right) -> left.getId() - right.getId());System.out.println(list);

簡(jiǎn)單

List<CustomObject> list = getCustomObjectList();list.sort(Comparator.comparing(CustomObject::getId));System.out.println(list);

顯然,初始代碼也可以用于JDK 8。


查看完整回答
反對(duì) 回復(fù) 2019-07-30
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

問(wèn)題是:“排序集合”。所以你不能使用Collections.sort(List<T> l, Comparator<? super T> comparator)

一些技巧:

對(duì)于收集類(lèi)型:

Comparator<String> defaultComparator = new Comparator<String>() {
   @Override
   public int compare(String o1, String o2) {
       return o1.compareTo(o2);
   }};Collection<String> collection = getSomeStringCollection();String[] strings = collection.toArray(new String[collection.size()]);Arrays.sort(strings, defaultComparator);List<String> sortedStrings = Arrays.asList(strings);Collection<String> collection = getSomeStringCollection();List<String> list = new ArrayList(collection);Collections.sort(list, defaultComparator);collection = list; // if you wish

對(duì)于列表類(lèi)型:

List<String> list = getSomeStringList();Collections.sort(list, defaultComparator);

對(duì)于Set類(lèi)型:

Set<String> set = getSomeStringSet();// Than steps like in 'For Collection type' section or use java.util.TreeSet// TreeSet sample:// Sorted using java.lang.Comparable.Set<String> naturalSorted = new TreeSet(set);Set<String> set = getSomeStringSet();Set<String> sortedSet = new TreeSet(defaultComparator);sortedSet.addAll(set);

Java 8版本。有java.util.List#sort(Comparator<? super E> c)方法

List<String> list = getSomeStringList();list.sort(defaultComparator);

要么

List<String> list = getSomeStringList();list.sort((String o1, String o2) -> o1.compareTo(o2));

或者對(duì)于實(shí)現(xiàn)Comparable的類(lèi)型:

List<String> list = getSomeStringList();list.sort(String::compareTo);


查看完整回答
反對(duì) 回復(fù) 2019-07-30
?
交互式愛(ài)情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊

一個(gè)稍微不同的例子說(shuō),如果你有一個(gè)類(lèi)沒(méi)有實(shí)現(xiàn)Comparable但你仍然想要在一個(gè)字段或方法上對(duì)它進(jìn)行排序。

Collections.sort(allMatching, new Comparator<ClassOne>() {
  @Override public int compare(final ClassOne o1, final ClassOne o2) {
    if (o1.getMethodToSort() > o2.getMethodToSort()) {
      return 1;
    } else if (o1.getMethodToSort() < o2.getMethodToSort()) {
      return -1;
    }  
    return 0;
  }});


查看完整回答
反對(duì) 回復(fù) 2019-07-30
  • 3 回答
  • 0 關(guān)注
  • 374 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)