集合元素排序
1.包装类型数据排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
public class CollectionSortTest {
/**
* @param args
*/
public static void main(String[] args) {
List<Integer> listInteger = new ArrayList<Integer>();
Random random = new Random(1);
for(Integer index = 0 ; index <= 10 ; index ++){
listInteger.add(random.nextInt(100));
}
// 默认按照升序排列
Collections.sort(listInteger);
System.out.println(listInteger);
// 倒叙:添加比较器;原则:返回值为-1交换元素;1不交换
// 倒叙:在返回值前添加-1,就会使返回值的正负属性颠倒
Comparator<Integer> integerDesc = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return -(o1 < o2 ? -1 : o1 > 02 ? 1 : 0);
}
};
Collections.sort(listInteger,integerDesc);
System.out.println(listInteger);
}
}
2.对象比较
固定排序顺序
按价格倒叙,按销量升序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionObjectSortTest {
/**
* @param args
*/
public static void main(String[] args) {
List<Product> productList = new ArrayList<Product>();
Product product1 = new Product("商品1", 20.00, 100);
Product product2 = new Product("商品2", 20.00, 200);
Product product3 = new Product("商品3", 30.00, 100);
Product product4 = new Product("商品4", 50.00, 100);
productList.add(product1);
productList.add(product2);
productList.add(product3);
productList.add(product4);
Collections.sort(productList);
System.out.println(productList);
}
}
class Product implements Comparable<Product>{
private String name ;
private Double price ; // 价格
private Integer amount ; // 销售总量
public Product() {
super();
}
public Product(String name, Double price, Integer amount) {
super();
this.name = name;
this.price = price;
this.amount = amount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
@Override
public String toString() {
return "Product [name=" + name + ", price=" + price + ", amount="
+ amount + "]";
}
@Override
public int compareTo(Product o) {
if(!this.price.equals(o.price )){
return -(this.price < o.price ?-1:this.price > o.price ? 1 : 0 );
}else{
return this.amount < o.amount ? -1 : this.amount > o.amount ? 1 : 0;
}
}
}
3.动态排序
通过 Compartor<Product> byPriceAndAmount = new Compator<Product>(){}
重复上面的比较条件即可
4.比较
固定排序,不可改变排序顺序;但如果需求是动态排序,则使用后者
分享到:
相关推荐
在`angular-collection-sort-master`压缩包中,包含了一个示例项目,展示了如何在实际应用中使用这个指令。你可以通过运行这个示例来更深入地理解其工作原理。 总的来说,`angular-collection-sort` 提供了一个简洁...
安装 npm install ampersand-collection-sort-mixin用法mixin 使用存储在会话属性中的两个属性: sortProps - 字符串数组或字符串。 用于对集合进行排序的属性名称数组。 如果只有一个,它可以只是一个字符串。 sort...
这个压缩包文件"laravel-collection-master"很可能包含了Laravel Collection的源码,让我们深入探讨一下Laravel Collection的相关知识点。 **一、Laravel Collection基础** 1. **创建Collection实例**: Laravel ...
metalsmith-collection-scoping 一个插件,可让您将范围应用于集合。... 例如: {" plugins " : {" metalsmith-collections " : {" articles " : { " sortBy " : " date " , " reverse " : true }, " secrets " : {
"collection-macros" 通过自定义的宏,弥补了这一空白,使得开发者可以更加优雅地进行集合操作。 首先,让我们来看看 "collection-macros" 提供的一些主要功能: 1. **链式操作**:这个库允许你对集合进行一系列...
"typescript-collection-sorter" 是一个基于 TypeScript 的项目,主要关注于集合排序的实现。TypeScript 是 JavaScript 的超集,提供了静态类型系统、类、接口等更丰富的语法特性,旨在提高代码质量和可维护性。在 ...
使用Collections.sort()方法可以对List进行排序,若需要自定义排序规则,可以实现Comparator接口。 8. 并集、交集、差集(union, intersection, difference): Collections提供了静态方法处理两个集合的并集、...
5. **排序数据**:`sort()`、`sortBy()`、`sortByDesc()`,可以对集合进行排序。 6. **合并数据**:`merge()`,合并多个集合为一个新的集合。 7. **扁平化数据**:`flatten()`,将多级嵌套的集合变为单级集合。 8. *...
安装$ npm install deep-sort-object - NPM $ bower install deep-sort-object bower 浏览器文件名为index.umd.js ,它支持CommonJS,AMD和globals( deepForEach )。 如果要在旧的浏览器上运行此模块,则必须包括 ...
此外,集合框架还包含了一些高级特性,如集合的转换(Collections.sort(),Arrays.asList())、集合的并发处理(ConcurrentHashMap,CopyOnWriteArrayList)以及流API(Stream)。这些特性大大提高了代码的可读性和...
集合框架001-Collection接口6-9"中涉及的关键知识点,包括`Collection`接口、`ArrayList`源码分析、`Comparator`接口以及`Comparable`接口,以及`Arrays`类中的算法。 首先,`Collection`接口是Java集合框架的根...
这使您能够count()集合,在其上使用foreach ,像数组$a[1]一样访问它并对其内容进行排序$a->sort($sorter) 。 除了常规集合之外,还有LazyCollection允许您指定一个闭包,该闭包仅在需要时才初始化集合内容。 创建...
3. **集合查询**:`isEmpty(Collection<?> c)`检查集合是否为空,`max(Comparator<? super T> comparator, Collection<? extends T> coll)`找到集合中的最大元素,`min(Comparator<? super T> comparator, ...
这些方法包括排序(`sort(List<T> list)`)、查找(`binarySearch(List<? extends Comparable<? super T>> list, T key)`)、反转(`reverse(List<?> list)`)以及集合的复制(`copy(List<? super T> dest, List...
本项目致力于练习集合常用的操作:filter,map,flatmap,reduce,sort,skip,limit,allmatch等。 对于集合的操作,可以有多种方式实现,本教程主要用Java8 Stream API 的方式实现,您在实现测试的过程中,可以正...
- `Collections.sort()`: 对 List 进行排序。 - `Collections.reverse()`: 反转 List 的顺序。 - `Collections.shuffle()`: 打乱 List 的顺序。 - `Collections.max()` 和 `Collections.min()`: 获取 List 中的最大...
- `sort(T[] a)`:对数组进行排序。 - `binarySearch(T[] a, T key)`:在已排序的数组中查找指定元素的位置。 - `copyOf(T[] original, int newLength)`:创建一个新的数组,其长度为 `newLength`,并将原数组的...
8. `array_sort`:对数组进行排序。 在Golang中,这些功能通常需要通过循环和条件判断来实现,而imiskolee-collection则通过封装这些操作,提供了更简洁的API,提高了代码的可读性和可维护性。 此外,Golang的接口...
对于需要排序的集合,可以使用Collections.sort()方法。对于Set集合,可以使用TreeSet,它会根据元素的自然顺序或提供的Comparator进行排序。 ### 集合的比较 两个集合可以通过equals()方法进行比较,这个方法会...