Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据照片属性按字母顺序排列照片阵列列表_Java_Sorting_Arraylist - Fatal编程技术网

Java 根据照片属性按字母顺序排列照片阵列列表

Java 根据照片属性按字母顺序排列照片阵列列表,java,sorting,arraylist,Java,Sorting,Arraylist,我已经搜索了这个网站,找到了很多资源,没有一个能回答这个问题。考虑阅读前的投票或标记重复。 我不能使用比较器接口或.sort() 我有一个名为“photoAlbum”的照片对象的ArrayList,如下所示ArrayList photoAlbum=new ArrayList()其中每个照片对象都包含一个名为photopername的字符串属性。我需要使用photopername属性按字母顺序对照片对象进行排序。我知道我可以使用冒泡排序或交换排序,但如何根据每个照片photorname属性对Pho

我已经搜索了这个网站,找到了很多资源,没有一个能回答这个问题。考虑阅读前的投票或标记重复。 我不能使用比较器接口或
.sort()

我有一个名为“photoAlbum”的照片对象的ArrayList,如下所示
ArrayList photoAlbum=new ArrayList()
其中每个照片对象都包含一个名为
photopername
的字符串属性。我需要使用
photopername
属性按字母顺序对照片对象进行排序。我知道我可以使用冒泡排序或交换排序,但如何根据每个照片
photorname
属性对
Photo相册
ArrayList中的照片对象本身进行排序

仅仅是提示或一般的例子将是难以置信的感激

PS我不允许使用
比较器
接口或
排序
方法。

尝试以下方法:

Collections.sort(your array list object, new comparator());

public class CustomComparator implements Comparator<Your Array List> {
        @Override
        public int compare(ClassObj o1, ClassObj o2) {
            return String.valueOf(o1.getName()).compareTo(String.valueOf(o2.getName()));
        }
    }
Collections.sort(数组列表对象,new comparator());
公共类CustomComparator实现了Comparator{
@凌驾
公共整数比较(ClassObj o1,ClassObj o2){
返回String.valueOf(o1.getName()).compareTo(String.valueOf(o2.getName()));
}
}
或者试试这个逻辑:

  import java.util.*;

    public class BubbleSort {

   public static void main(String[] args) {
    String l[]={"ABCD" , "XYZ" , "DEF" , "PQR"};
    BubbleSort(l);
    for(int i=0; i<l.length; i++)
    {
        System.out.println(l[i]);
    }
  }

 private static void BubbleSort(String[] array) {
    String t;
    for(int i=0; i<array.length; i++) {
        for(int j=0; j<array.length-1-i; j++) {
        if(array[j].compareTo(array[j+1])>0) {
            t= array[j];
            array[j] = array[j+1];
            array[j+1] = t;
        }
    }
    }
}
   }
import java.util.*;
公共类泡泡糖{
公共静态void main(字符串[]args){
字符串l[]={“ABCD”、“XYZ”、“DEF”、“PQR”};
泡泡糖(l);

对于(inti=0;i您可以创建一个方法

public static comparePhotos(Photo a, Photo b) {
    return a.photographerName.compareTo(b.photographerName);
}
然后,在排序算法中要比较照片的任何位置:

而不是这样做:

if(photo1 < photo2) //this wouldn't work
if(photo1
你可以:

if(comparePhotos(photo1, photo2) < 1)
if(比较照片(照片1,照片2)<1)

如果
photo1,则comparePhotos将返回负值。摄影师姓名
小于
photo2。摄影师姓名
0如果他们相等,则返回正值如果
photo1。摄影师姓名
大于
photo2。摄影师姓名
有两个可能性:

  • Photo类将实现接口,您将在Photo类中实现
    compareTo
    方法。然后您只需调用
    Collections.sort(photoAlbum);

  • 您将实现自己的并调用
    Collections.sort(photoAlbum,comparator);
    。这样,您就不需要修改Photo类


  • 编辑:如果你不能使用这个,就实现你最喜欢的排序算法。或者看看排序函数的Java实现。

    cough:ComparatorI我在寻找实际的排序算法,我不能使用
    .sort()
    。这是一门大学课程。请检查编辑后的答案,将arraylist对象传递到数组中。您自己尝试搜索重复项有多困难?我相信这是的重复项,是的,我读过您的问题和那个问题。我不被允许实现比较器接口。这不是您的错,但我对那些先做一个作业,然后禁止学生以正确的方式做作业。他们希望我们了解使用排序算法的基本原理。我同意。为什么这种情况总是发生在我身上。请删除重复标记,以便人们真正查看我的问题。请。我想这就是learni和ng计算机编程和学习计算机科学。我在1990年获得了第一份编程工作,但我不了解排序算法的基本原理。你可能使用的每种语言都有一些相当于
    的集合。排序
    ,只有在非常有限的一组应用程序中,仅仅使用它是错误的。LOL.如何在没有比较仪的情况下拥有比较仪。+1让我微笑。