gpt4 book ai didi

java - 基于对象属性对 ArrayList 进行排序

转载 作者:行者123 更新时间:2023-12-01 13:01:46 25 4
gpt4 key购买 nike

我有一个ArrayList<CustomObject> myFinalList = new ArrayList<CustomObject>();该列表对于列表中的每个条目都有一个对象属性“NumberOfLikes”。 “NumberOfLikes”是字符串值。

我已将这些值派生到一个数组中,如下所示:-

ArrayList<String> numberOfLikes = new ArrayList<String>();

for(int j =0; j<myFinalList.size(); j++)
{
String likes = myFinalList.get(j).getNewsLikes();
numberOfLikes.add(likes);
}


numberofLikesArray= numberOfLikes.toArray(new String[numberOfLikes.size()]);

int[] numberofLikesArrayInt = new int[numberofLikesArray.length];

for (int n = 0; n < numberofLikesArray.length; n++)
{
numberofLikesArrayInt[n] = Integer.parseInt(numberofLikesArray[n]);
}
Arrays.sort(numberofLikesArrayInt);
ArrayList<Integer> intAarrylistlikes = new ArrayList<Integer>();
for (int i = 0; i < numberofLikesArrayInt.length; i++)
{
intAarrylistlikes.add(numberofLikesArrayInt[i]);
}
Collections.reverse(intAarrylistlikes);
numberofLikesArrayInt = convertIntegers(intAarrylistlikes);
numberofLikesArray = Arrays.toString(numberofLikesArrayInt).split("[\\[\\]]")[1].split(", ");

for (int i = 0; i < numberofLikesArray.length; i++)
{
companyNewsList = Lists.newArrayList(Collections2.filter(myFinalList, new ArticleFilter2(numberofLikesArray[i])));
}

ArticleFilter2.java

public class ArticleFilter2 implements Predicate<News>
{
private final Pattern pattern;

public ArticleFilter2(final String regex)
{
pattern = Pattern.compile(regex);
}

@Override
public boolean apply(final CustomObject input)
{
return pattern.matcher(input.getLikes()).find();
}
}

现在这个数组由按降序排列的“NumberOfLikes”组成。现在我想创建另一个 ArrayList,它根据这些值对“MyFinalList”进行排序,即:- 具有最大喜欢的项目应该首先出现。

我该怎么做?

最佳答案

这需要一个带有您的自定义类的Comparatorhttp://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

创建一个实现 Comparator 的新类并实现此方法:

public class YourComparator<CustomClass> implements Comparator{
@Override
public int compare ( CustomClass obj1, CustomClass obj2 ) {
return (int) (obj1.getYourProperty() - obj2.getYourProperty());
}
}

使用它:

Collections.sort(MyFinalList, new YourComparator());

关于java - 基于对象属性对 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23468264/

25 4 0