相关疑难解决方法(0)

如何理解Java中比较器引发的顺序?

我对 Java 中的比较器和 Collections.sort() 感到非常困惑。 我不明白比较器引起的顺序。我不清楚比较函数应该返回哪个数字来获取排序方向。我也不知道 Collections 将如何使用该比较结果对输入数据进行排序。我应该背诵它们吗?有没有什么比较容易理解的东西?有人能为我解释一下吗?谢谢。

public int compare(Obj a, Obj b){ 
    if(a.age > b.age) return 1; 
    if(a.age < b.age) return -1;
    else              return 0;
}
Run Code Online (Sandbox Code Playgroud)

更新

在收到一些友好的软件工程师的一些解释后,我了解到比较器定义了集合中元素的顺序。例如,当比较 a 和 b 时,如果比较器返回 -1,则 a 应放在列表中的 b 之前。

java comparator

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

我们如何在 Comparator.comparing 中传递变量字段/方法名称

我有Report {String name, Date date, int score }课。我希望能够使用新的 java 8 语法对任何成员变量的报告列表进行排序

所以java 8提供了这个新的

list.sort(Comparator.comparing(report -> report.name)) 
Run Code Online (Sandbox Code Playgroud)

按名称对列表进行排序。

可以说,我想为此方法提供一个变量字段名称,而不是名称,例如。就像是

list.sort(Comparator.comparing(report -> report.anyField))
Run Code Online (Sandbox Code Playgroud)

其中anyField 可以是名称、日期或分数。我如何实现这种行为。

java java-8

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

对象列表上的自定义排序

我有像这样的对象列表

actors = [Person('Raj' ,'Hindi'),
          Person('John',  'English'),
          Person('Michael' 'Marathi'),
          Person('Terry','Hindi'),
          Person('Terry', 'Telugu')]
Run Code Online (Sandbox Code Playgroud)

我想根据他们的母语对这份人民名单进行排序.顺序马拉地语,英语,印地语,泰卢固语.意味着我想要以自定义逻辑而不是按升序或降序对对象进行排序.

我正在使用python 3.7.你能帮我解决一下这个怎么办?

python sorting oop list python-3.x

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

在java中对String进行排序

我正在尝试在java中对字符串进行排序,下面是我的代码:

public class SortingString {

    public static void Sortstring(){
        String str="String";
        char [] charStr = str.toCharArray();
        for (char value : charStr) {
              System.out.println("Value = " + value);
            }

        Arrays.sort(charStr);

        System.out.println("The sorted array is:");
         for (char value : charStr) {
              System.out.println("Value = " + value);
            }

    }

    public static void main(String [] args){
        Sortstring();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以当我输入str ="Java"时,它给了我:

Value = J
Value = a
Value = v
Value = a
The sorted array is:
Value = J
Value = a
Value …
Run Code Online (Sandbox Code Playgroud)

java arrays sorting string char

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

我是android Java的初学者.任何人都可以解释代码

编写此代码是为了按月对hashmap进行排序,但我无法完全理解.谁能解释一下呢.另外我想知道我是否正在for循环中正确访问hashmap.monthAnalysis是hashmap的名称,month是关键.对不起,我忘了提到我知道它将数据添加到表动态创建行.我的问题是前4行代码.

public void addData1(TableLayout tableLayout, HashMap<String, MonthAnalysis> monthAnalysis) {

    String[] sortedMonthList = (String[]) monthAnalysis.keySet().toArray();
    Arrays.sort(sortedMonthList);

    for (String month : sortedMonthList) {
        /* Create a TableRow dynamically */
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableLayout.LayoutParams(
                TableLayout.LayoutParams.MATCH_PARENT,
                TableLayout.LayoutParams.WRAP_CONTENT));
        addRowItem(tr, getMonth(month), 1.3f, Typeface.DEFAULT, Color.parseColor("#000000"), Gravity.LEFT);
        addRowItem(tr, Long.toString(monthAnalysis.get(month).credit), 0.9f, Typeface.DEFAULT, Color.parseColor("#000000"), Gravity.RIGHT);
        addRowItem(tr, Long.toString(monthAnalysis.get(month).debit), 1f, Typeface.DEFAULT, Color.parseColor("#000000"), Gravity.RIGHT);
        //addRowItem(tr, convertDate(Long.parseLong(transaction.date)), 1.5f, Typeface.DEFAULT, Color.parseColor("#000000"), Gravity.RIGHT);

        tableLayout.addView(tr, new TableRow.LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT));
    }
}
Run Code Online (Sandbox Code Playgroud)

java android hashmap

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

无法理解Arrays.sort()功能

我是Java的新手,我正在尝试理解比较器接口.我尝试了以下代码:

package comparator;

import java.io.*;
import java.util.*;

public class comparator {
    public static void main(String args[]){
        bankAccount[] ba=new bankAccount[500];
        ba[0]=new bankAccount(50);
        ba[1]=new bankAccount(90);
        ba[2]=new bankAccount(20);
        Comparator c=new comparing();
        System.out.println(c.compare(ba[0], ba[1]));
        Arrays.sort(ba, c);
    }
}

class bankAccount{
    public bankAccount(double bal){
        balance=bal;
    }
    public double balance;
}

class comparing implements Comparator{
    public int compare(Object first, Object second){
        bankAccount ba1=(bankAccount)first;
        bankAccount ba2=(bankAccount)second;
        int retval;
        if(ba1.balance<ba2.balance){
            retval=-1;
        }
        else if(ba1.balance>ba2.balance){
                retval=1;
            }
        else{
            retval=0;
        }
        return retval;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Exception in thread "main" …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception

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

仅在两个实例之间比较一个变量

我正在学习Java,他们给了我一个我非常努力的练习。我将为您提供完整的练习(从我的母语翻译而来),而不是对其进行解释,因此您可以理解。我真的不明白我该怎么做。我不假装完整的代码(即使我会很欣赏,因为制作精良的代码可以帮助我改善并更好地理解应该如何做),但至少我想知道我应该从哪里开始寻找对于解决方案,因为现在我撞墙了,很痛。

我的第一个想法是重写.equals方法,但这似乎并不正确。我以为我可以创建一个子类,但在示例中,它们对主实例和3个派生实例都使用相同的类,所以不是。

练习:

创建一个Animal类,其特征在于:

  • 腿数
  • 类型(鸟,猫等)
  • 平均重量

如果两只动物的腿数相同,属于同一类型并且具有相同的平均体重,则认为它们是相等的。该类必须实现三种方法,这些方法允许转换动物,以便仅比较一个特征(每个特征一个方法)。


范例:

    Animal cat = new Animal (4, "Cat", 5);
    Animal dog = new Animal (4, "Dog", 5);

    Animal catNumberOfLegs = cat.compareNumberOfLegs();
    Animal catType = cat.compareType ();
    Animal catWeigth = cat.compareWeigth();

    Animal dogNumberOfLegs = dog.compareNumberOfLegs ();
    Animal dogType = dog.compareType ();
    Animal dogWeigth = dog.compareWeigth ();

    System.out.println (cat.equals (dog)); // false
    System.out.println (catNumberOfLegs.equals (dogNumberOfLegs)); // true
    System.out.println (catType.equals (dogType)); // false
    System.out.println (catWeigth.equals (dogWeigth)); // true

------------
Run Code Online (Sandbox Code Playgroud)
  • 变量的值必须保持不变。

  • Java是一种面向对象的语言:请记住!

编辑:我正在编辑此原因,我在注释中看到一些混乱,不知道这是造成练习写得不好还是导致翻译的原因。

关键是,我有两个Animal类实例。一个叫猫,另一个叫狗。我有这3个单独的方法来实现,当在实例上使用时,返回给我一个新实例,该实例在使用.equals()时仅考虑其中一个变量。让我们采用方法“ compareNumberOfLegs();”。举个例子。动物dogTWO = …

java oop

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