Tag: 排序

在Java 8中反转比较器

我有一个ArrayList,并希望按降序排序。 我用它来java.util.stream.Stream.sorted(Comparator)方法。 这是根据Java API的描述: 返回由此流的元素组成的流,根据提供的Comparator进行排序。 这个方法按升序返回给我。 我应该更改哪个参数,只是为了降序?

int 数组(从最低到最高排序)

所以我不确定为什么这对我来说变得如此困难,但我需要从高到低,从低到高排序。 从高到低我有: int a, b; int temp; int sortTheNumbers = len – 1; for (a = 0; a < sortTheNumbers; ++a) { for (b = 0; b < sortTheNumbers; ++b) { if (array[b] < array[b + 1]) { temp = array[b]; array[b] = array[b + 1]; array[b + 1] = temp; } } } 但是,我不能为我的生活让它反向工作(从低到高),我已经考虑过逻辑,它总是为所有值返回0。 […]

在Java中对Array的ArrayList进行排序

在Java中对ArrayList进行排序的最佳方法是什么? String []是…… String[] = new String[] { “abc”, “abc”, “abc”, “abc”, “abc”, “abc”, “abc” }; 现在我想用String []的第二个值(在索引1处)对整个ArrayList进行排序。 我需要循环遍历每个String [],然后循环遍历索引1处的子节点。 有任何想法吗? EDITED 我有更多的描述。 我实际上从一些XML文件获取学校,XML中的每个节点都有7个属性。 现在我正在创建一个String []的ArrayList,它从XML中保存那些学校节点,而String []数组本身保存着特定节点的属性。 现在,我想对它进行排序的方式是,它应该根据学校的状态进行排序,这是XML中的第二个属性和ArrayList中String []中的索引1。 我需要首先遍历每个学校(XML中的节点,Java中的String [])然后我将必须过滤State(XML中的State属性,Java中的String [1])。 现在清楚了吗?

从ArrayList中删除重复值

我有一个字符串的Arraylist,我在其中添加了一些重复值。 我只是想删除重复值,所以如何删除它。 这里的例子我有一个想法。 List list = new ArrayList(); list.add(“Krishna”); list.add(“Krishna”); list.add(“Kishan”); list.add(“Krishn”); list.add(“Aryan”); list.add(“Harm”); System.out.println(“List”+list); for (int i = 1; i < list.size(); i++) { String a1 = list.get(i); String a2 = list.get(i-1); if (a1.equals(a2)) { list.remove(a1); } } System.out.println("List after short"+list); 但是有没有足够的方法删除重复的表单列表。 没有使用For循环? 你可以通过使用HashSet或其他方式,但只使用数组列表。 我想对此有你的建议。 谢谢你提前回答。

PriorityQueue没有在添加上排序

我有一个优先级队列,我在其中添加一个Node对象,其中节点应按其包含的值进行排序。 出于某种原因,优先级队列不会对添加的节点进行排序。 如果有人可以看到这个问题或有任何指导,我很感激。 这是一个简短的例子: PriorityQueue PQ = new PriorityQueue(); //for each entry create a node and add it to the PriorityQueue for(Entry entry : entries){ PQ.add(new Node(entry.getKey(),entry.getValue(), true)); } 这是节点的compareTo方法: @Override public int compareTo(Node n) { if(n.frequency.intValue() > this.frequency.intValue()) return -1; else if(n.frequency.intValue() == this.frequency.intValue()) return 0; else return 1; }

查找数组中的前N个元素

在无序列表(例如100)中找到前N个(比如10个)元素的最佳解决方案是什么。 我头脑中的解决方案是1.使用快速排序对其进行排序,2。进入前10名。 但还有更好的选择吗?

如何在Java中对字符串的ArrayList进行排序?

我有随机放入ArrayList String 。 private ArrayList teamsName = new ArrayList(); String[] helper; 例如: teamsName.add(helper[0]) where helper[0] = “dragon”; teamsName.add(helper[1]) where helper[1] = “zebra”; teamsName.add(helper[2]) where helper[2] = “tigers” // and so forth up to about 150 strings. 鉴于你无法控制输入(即进入ArrayList的字符串是随机的;任何顺序的斑马或龙),一旦ArrayList填充了输入,我如何按字母顺序排序,排除第一个? teamsName[0]很好; 按字母顺序排列teamsName[1 to teamsName.size] 。

JTable +排序特定字段

我有一个JTable并添加了排序。 现在,JTable有5列,日期字段中的第2列转换为DD / MM / YYYY,并显示在单元格的JTextField中。 当我将它排序为字符串并且我将日期混淆时,如何更改该特定列的排序行为? 例如。 按照ASC顺序排序后,我得到了这个: 01/02/2012 01/03/2011 01/04/2011 01/05/2011 01/06/2011 01/07/2011 01/08/2011 01/09/2011 01/10/2011 01/12/2011 这是错的,我应该得到结果 01/03/2011 01/04/2011 01/05/2011 01/06/2011 01/07/2011 01/08/2011 01/09/2011 01/10/2011 01/12/2011 01/02/2012 我的代码现在看起来像这样排序 List sortKeys = new ArrayList(); sortKeys.add(new SortKey(2, SortOrder.ASCENDING)); table.getRowSorter().setSortKeys(sortKeys); 我应该仅针对该特定列更改哪些内容?

对包含Java中的数字的字符串进行排序

我对字符串的默认比较器(在SortedSet中)有问题。 问题是默认比较器没有排序包含数字的良好字符串,即:在集合中我有: room1, room2, room100 自然排序应该如上所述,但在集合中我有: room1, room100, room2 我知道它为什么但我不知道如何改变它。

如何在一个class级中制作2个可比较的方法?

我有一个类,我已经通过一个属性对它进行排序。 现在我需要做另一件事,我需要创建另一种方法来对数据进行排序。 我该怎么做,所以我可以在两种方法之间做出选择。 我知道的唯一命令是Collections.sort,它将从我想要比较其数据的类中获取方法compareTo。 它甚至可能吗?