相关疑难解决方法(0)

使用自定义排序顺序对对象的ArrayList进行排序

我希望为我的地址簿应用程序实现一个排序功能.

我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.

如何编写自定义排序功能来执行此操作?

java sorting collections arraylist

114
推荐指数
4
解决办法
17万
查看次数

如何在不同的时间按不同的参数对列表进行排序

我有一个以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).实现这一目标的最优雅的解决方案是什么?

java sorting

94
推荐指数
4
解决办法
9万
查看次数

如何按属性对对象的arylylist进行排序?

比方说你有一个ArraylistHockeyPlayer对象.

如果他们都有一个变量int goalsScored你怎么能排序.你怎么能按目标排序呢?

java sorting collections

37
推荐指数
4
解决办法
9万
查看次数

按多个字段对对象列表进行排序

我有一个Java对象列表,我想根据多个字段进行排序.

public class graduationCeremony {
    String campus;
    String faculty;
    String building;
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用a ComparatorComparable界面根据多个字段对列表进行排序?我看到的所有例子都只根据一个字段排序.换句话说,人们可以按"校园"或"教师"或"建筑"进行排序.我想按"校园"排序,然后是"教师",然后是"建筑"(因为它存在于SQL中ORDER BY campus, faculty, building)

我认为之前已经提出过这个问题,但我不明白接受的答案.有人可以扩展或说明这个答案吗?

java sorting collections

34
推荐指数
3
解决办法
8万
查看次数

并行排序List而不在Java 8中创建临时数组

Java 8提供了java.util.Arrays.parallelSort使用fork-join框架并行排序数组的方法.但是没有相应Collections.parallelSort的排序列表.

我可以使用toArray,对该数组进行排序,并将结果存储在我的列表中,但这会暂时增加内存使用量,如果我使用并行排序已经很高,因为并行排序只能为巨额列表付出代价.而不是内存的两倍(列表加上parallelSort的工作内存),我正在使用三次(列表,临时数组和parallelSort的工作内存).(Arrays.parallelSort文档说"算法需要的工作空间不大于原始数组的大小".)

除了内存使用,Collections.parallelSort对于看起来像是一个相当常见的操作也会更方便.(我倾向于不直接使用数组,所以我肯定比Arrays.parallelSort更经常使用它.)

该库可以测试RandomAccess以避免尝试例如快速排序链表,因此这不能成为故意遗漏的原因.

如何在不创建临时数组的情况下并行对List进行排序?

java sorting java-8

30
推荐指数
3
解决办法
5302
查看次数

如何仅通过第一个元素对2D ArrayList <String>进行排序

为了避免重复索赔,我看过这篇文章并不是我想要的.
每个其他2D ArrayList问题涉及doubleint数字; 我的问题是关于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作为输入创建了一个排序数组方法,我会没事的.我没有看到任何明确回答这个问题的问题.我将继续尝试自己提出一个答案.

java sorting arraylist

5
推荐指数
2
解决办法
1万
查看次数

为复合对象编写比较器以进行二进制搜索

我有一个类和实例列表,看起来像这样(更改字段名称以保护无辜/专有):

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)

java binary-search comparator

4
推荐指数
1
解决办法
2454
查看次数

如何按字母顺序对字符串的ArrayList进行排序?

我正在尝试创建一个程序,可以按字母顺序对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)

java sorting collections arraylist

2
推荐指数
2
解决办法
1万
查看次数

在哈希映射中排序

我正在努力熟悉收藏.我有一个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)

java sorting collections

1
推荐指数
1
解决办法
1297
查看次数

Java:Effizient List Sorting

我有一个List包含可变数量的对象(通常超过1000).这些对象具有某些属性,例如价格和距离(均为int).

现在我希望能够从最近到最远的List最便宜的OR排序,但我不知道如何实现它.我已经尝试制作我的对象工具Comparable,但这只能让我按其中一个属性排序......我如何根据不同的属性进行排序?

java sorting comparable

-1
推荐指数
1
解决办法
44
查看次数