對ArrayList的自定義元素進行排序

2021-04-12 16:06:46 字數 1659 閱讀 2374

arraylist的sort(icomparer)方法使用指定的比較器對整個arraylist中的元素進行排序。向arraylist中新增的自定義元素,當需要排序時,需要公開比較元素方法。

以下是乙個例子。

先宣告需要新增到arraylist的自定義元素型別one:

public class one

}公開比較元素方法:

arraylist比較元素時要使用 icomparer 實現。以下是三個比較器

比較器oneicomparer1實現比較兩個one(按照one.n的公升序排列)

public class oneicomparer1 : icomparer 

}比較器oneicomparer2實現比較兩個one(按照one.n的降序排列)

public class oneicomparer2 : icomparer 

}比較器oneicomparer3實現比較兩個one(按照one.i的公升序排列)

public class oneicomparer3 : icomparer 

}arraylistlist = newarraylist();

//向list新增三個型別為one的元素

list.add(new one("a1",999));

list.add(new one("a2",998));

list.add(new one("a3",997));

//建立自定義比較器comparer1

comparer1 = new oneicomparer1();

//按照自定義比較器comparer1對list中的元素排序(公升序排列)

list.sort(comparer1);

//使用比較器comparer1在整個已排序的 list 中搜尋one.n的值為"a3"的元素從零開始的索引。

list.binarysearch(new one("a3",0),comparer1) 的值為2

//按照one.n的降序排列後搜尋one.n的值為"a3"的元素從零開始的索引。

comparer2 = new oneicomparer2();

list.sort(comparer2);

list.binarysearch(new one("a3",0),comparer2) 的值為0

//搜尋one.i的值為997的元素從零開始的索引。

comparer3 = new oneicomparer3();

list.sort(comparer3);

list.binarysearch(new one("",997),comparer3) 的值為0

為了**更加清晰,並容易理解,可以給one新增乙個建構函式

public one(string n)

list.binarysearch(new one("a3",0),comparer1)可改為:

list.binarysearch(new one("a3"),comparer1)

自定義實現ArrayList

package com.mylist public class myarraylist 返回list的大小 return public int size 判斷是否為空 return public boolean isempty 建立指定大小的list集合 param init public myar...

對ArrayList中的自定義型別進行搜尋

一般情況下我只需要使用arraylist.contains 方法就可以判斷某個元素是否存在,但如果arraylist中的為自定義的類就需要自己實現,如下面例子 如我們有乙個類 public class employee public string employeename public dateti...

ArrayList實現自定義排序

arraylist中存在sort排序方法,只要你實現了comparator的介面,按照你自己的排序業務進行實現,你只要告訴這個介面按照什麼型別進行排序就ok了。這種方式類似於設計模式中的策略模式,把流程劃分好,具體的業務邏輯由使用者指定 實現 public class comparatortest ...