我希望为我的地址簿应用程序实现一个排序功能.
我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.
如何编写自定义排序功能来执行此操作?
我有一个以Person多个属性命名的类,例如:
public class Person {
private int id;
private String name, address;
// Many more properties.
}
Run Code Online (Sandbox Code Playgroud)
很多Person对象存储在一个ArrayList<Person>.我想通过多个排序参数对此列表进行排序,并且不时有所不同.例如,我可能有一次想要按name升序然后address降序排序,而另一次只能通过id降序排序.
而且我不想创建自己的排序方法(即,我想使用Collections.sort(personList, someComparator).实现这一目标的最优雅的解决方案是什么?
比方说你有一个Arraylist的HockeyPlayer对象.
如果他们都有一个变量int goalsScored你怎么能排序.你怎么能按目标排序呢?
我有一个Java对象列表,我想根据多个字段进行排序.
public class graduationCeremony {
String campus;
String faculty;
String building;
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用a Comparator或Comparable界面根据多个字段对列表进行排序?我看到的所有例子都只根据一个字段排序.换句话说,人们可以按"校园"或"教师"或"建筑"进行排序.我想按"校园"排序,然后是"教师",然后是"建筑"(因为它存在于SQL中ORDER BY campus, faculty, building)
Java 8提供了java.util.Arrays.parallelSort使用fork-join框架并行排序数组的方法.但是没有相应Collections.parallelSort的排序列表.
我可以使用toArray,对该数组进行排序,并将结果存储在我的列表中,但这会暂时增加内存使用量,如果我使用并行排序已经很高,因为并行排序只能为巨额列表付出代价.而不是内存的两倍(列表加上parallelSort的工作内存),我正在使用三次(列表,临时数组和parallelSort的工作内存).(Arrays.parallelSort文档说"算法需要的工作空间不大于原始数组的大小".)
除了内存使用,Collections.parallelSort对于看起来像是一个相当常见的操作也会更方便.(我倾向于不直接使用数组,所以我肯定比Arrays.parallelSort更经常使用它.)
该库可以测试RandomAccess以避免尝试例如快速排序链表,因此这不能成为故意遗漏的原因.
如何在不创建临时数组的情况下并行对List进行排序?
为了避免重复索赔,我看过这篇文章并不是我想要的.
每个其他2D ArrayList问题涉及double或int数字; 我的问题是关于Strings.
我有一个2D ArrayList,定义如下:
ArrayList<ArrayList<String>> namesAndNumbers = new ArrayList<ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)
我们的想法是,ArrayLists每行中的第一项包含名称,每行中的其余列包含电话号码(未知数量).因此,我想避免将其转换为常规数组.
假设我填充了我的ArrayList,我有这个:
{"Mike", "(805) 766-4920"}
{"Emily", "(705) 668-9292", "(705) 555-1060"}
{"James", "(605) 965-2000"}
Run Code Online (Sandbox Code Playgroud)
我希望我的输出是这样的:
{"Emily", "(705) 668-9292", "(705) 555-1060"}
{"James", "(605) 965-2000"}
{"Mike", "(805) 766-4920"}
Run Code Online (Sandbox Code Playgroud)
我想保留与名称对应的数字,但只需按名称对数组进行排序.
我希望有一个内置的函数操作类型的东西,但如果有人用2D ArrayList作为输入创建了一个排序数组方法,我会没事的.我没有看到任何明确回答这个问题的问题.我将继续尝试自己提出一个答案.
我有一个类和实例列表,看起来像这样(更改字段名称以保护无辜/专有):
public class Bloat
{
public long timeInMilliseconds;
public long spaceInBytes;
public long costInPennies;
}
public class BloatProducer
{
final private List<Bloat> bloatList = new ArrayList<Bloat>();
final private Random random = new Random();
public void produceMoreBloat()
{
int n = bloatList.size();
Bloat previousBloat = (n == 0) ? new Bloat() : bloatList.get(n-1);
Bloat newBloat = new Bloat();
newBloat.timeInMilliseconds =
previousBloat.timeInMilliseconds + random.nextInt(10) + 1;
newBloat.spaceInBytes =
previousBloat.spaceInBytes + random.nextInt(10) + 1;
newBloat.costInPennies =
previousBloat.costInPennies + random.nextInt(10) + 1;
bloatList.add(newBloat);
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个程序,可以按字母顺序对ArrayList的内容进行排序.现在我的课程中有三节课......
狗
public class Dog {
private String name;
public Dog(){
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
Run Code Online (Sandbox Code Playgroud)
DogList(包含Dog类型的ArrayList)
import java.util.ArrayList;
public class DogList {
private ArrayList<Dog> dogList;
public DogList(){
DogList = new ArrayList<>();
}
public void setSize(int DogSize){
for(int x = 0; x <= DogSize; x++){
DogList.add(new Dog());
}
}
public ArrayList<Dog> getList(){
return dogList;
}
}
Run Code Online (Sandbox Code Playgroud)
最后一个类DogSorter,它试图访问DogList ArrayList,然后尝试按字母顺序对该ArrayList的内容进行排序.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class DogSorter …Run Code Online (Sandbox Code Playgroud) 我正在努力熟悉收藏.我有一个String,它是我的密钥,电子邮件地址和Person对象(firstName,lastName,电话,电子邮件).我在Sun的网页上的Java集合章节中读到,如果你有一个HashMap并希望它被排序,你可以使用TreeMap.这种排序如何运作?它是基于Person类中的compareTo()方法吗?我覆盖了Person类中的compareTo()方法以按lastName排序.但它不能正常工作,并且想知道我是否有正确的想法.这段代码底部的getSortedListByLastName是我尝试转换为TreeMap的地方.此外,如果这是正确的方法,或者正确的方法之一,我如何按firstName排序,因为我的compareTo()是通过lastName进行比较.
import java.util.*;
public class OrganizeThis
{
/**
Add a person to the organizer
@param p A person object
*/
public void add(Person p)
{
staff.put(p.getEmail(), p);
//System.out.println("Person " + p + "added");
}
/**
* Remove a Person from the organizer.
*
* @param email The email of the person to be removed.
*/
public void remove(String email)
{
staff.remove(email);
}
/**
* Remove all contacts from the organizer.
*
*/
public void empty()
{
staff.clear();
}
/**
* …Run Code Online (Sandbox Code Playgroud) 我有一个List包含可变数量的对象(通常超过1000).这些对象具有某些属性,例如价格和距离(均为int).
现在我希望能够从最近到最远的List最便宜的OR排序,但我不知道如何实现它.我已经尝试制作我的对象工具Comparable,但这只能让我按其中一个属性排序......我如何根据不同的属性进行排序?