import java.io.BufferedReader;
import java.util.Collections;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import com.javaranch.common.TextFileIn;
public class SortNames
{
public static class CelebrityNamesFile
{
public String firstName;
public String lastName;
public static class CompareLastName implements Comparator< CelebrityNamesFile >
{
@Override
public int compare( CelebrityNamesFile o1, CelebrityNamesFile o2 )
{
return o2.lastName.compareTo( o1.lastName );
}
}
public static void main( String[ ] args ) throws IOException
{
ArrayList< CelebrityNamesFile > myCelebrityList;
myCelebrityList = new ArrayList< CelebrityNamesFile >();
TextFileIn celebrityNamesFile = new TextFileIn( "celebrityNamesFile.txt" );
boolean doneReadingCelebrityNames = false;
while ( ! doneReadingCelebrityNames )
{
String oneName = celebrityNamesFile.readLine();
if ( oneName == null )
{
doneReadingCelebrityNames = true;
}
$Eclipse不喜欢后面的add语句,也就是说:ArrayList(SortNames.CelebrityNamesFile)类型中的方法add(SortNames.CelebrityNamesFile)不适用于参数(String)
else
{
myCelebrityList.add( oneName );
}
}
celebrityNamesFile.close();
$,然后它不喜欢我的sort语句,也就是说:Bound mismatch:类型集合的泛型方法sort(List T)不适用于参数(ArrayList(sortnames.CelebrityNamesFile))。推断的类型SortNames.CelebrityNamesFile不是有界参数的有效替代品(T扩展了可比(?super T))
Collections.sort( myCelebrityList );
System.out.println( myCelebrityList );
Collections.sort( myCelebrityList, new CelebrityNamesFile.CompareLastName() );
System.out.println( myCelebrityList );
}
}
}
对于第一个问题,问题相当简单。oneName
是一个字符串
,myCelebrityList
是CelebrityNamesFile
的集合-这意味着您只能将对象添加到类型为CelebrityNamesFile
的集合中。
对于第二个问题,CelebrityNamesFile
类没有实现Carable
接口。排序要求为列表元素类型实现排序,例如为类实现可比
或为排序
提供比较器
。
问题内容: 给出以下作为数据类的示例: 假设我会有一个国家清单 我想将这些信息流式传输到它们的区域及其对应的名称,我想执行以下操作: 但是,该代码无法编译,因为“ getRegions”的返回值是一个Collection(列表),而不是flatMap方法接受的Stream。但是由于我知道任何Collection都可以通过其Collection.stream()方法进行流传输,所以这应该不是问题。我
问题内容: 我有一个Java集合: 现在在显示列表之前有一个字段,我想按此排序此集合。 有什么办法可以做到吗? 问题答案: 使用比较器: 此外,如果实现,则只需使用 使用JDK 8,语法要简单得多。 更简单 最简单的 显然,初始代码也可以用于JDK 8。
问题内容: 我找不到使用此方法的任何示例,所有示例都给出了第二个参数“ null”。我听说此方法用于根据多个标准对类进行排序,但找不到示例。 对于本课程,如果我想根据学生的姓名和年龄对学生列表进行排序,如何使用方法Collections sort(List,Comparator) 问题答案: 在你现有的学生班级的基础上,这通常是我的工作方式,尤其是当我需要多个比较器时。 用法: 编辑 自Java
主要内容:1 集合元素的排序,2 Collections sort方法,3 字符串正序排序,4 字符串倒序排序,5 包装类型排序,6 自定义对象排序1 集合元素的排序 我们可以对以下元素进行排序: 字符串对象 包装类对象 用户自定义对象 Collections类提供用于对集合的元素进行排序的静态方法。如果集合元素为Set类型,则可以使用TreeSet。但是,我们无法对List的元素进行排序。Collections类提供用于对List类型元素的元素进行排序的方法。 2 Collections so
这是我的蓝图代码。 内部消息工作。 外部消息不工作。 我在docker中运行Red Hat AMQ 7和Fuse 7。内部消息队列在服务之间正常工作。 使用AMQ 6,当在activemq中设置时,我能够向61613上的嵌入式代理发送和接收STOMP消息。xml 现在,我正在使用AMQ 7.0的默认设置,它将接受程序设置为0.0.0.0:61616和61613,这两个接受STOMP协议。 但是相同
问题内容: 您需要有关Java集合排序的帮助。它给了我这个错误: 我的代码如下: 我做错什么了吗? 问题答案: 您不能对未实现该接口的对象列表进行排序。或者说,可以,但你必须提供的方法。 考虑一下:如何在不知道WifiSSID小于或大于另一个WifiSSID的情况下对列表进行排序? 你想用 编辑: 您定义了自己的专有接口,并在中实现了该专有Comparator接口。想要一个实例。它不是您不知道的专