【发布时间】:2016-11-28 01:27:25
【问题描述】:
我有两个列表,并试图用每个列表中的元素形成一个字符串,并且在我执行" " 之间时,排序顺序保持不变。但是,一旦我将"|" 放在中间,我想要这样做,Set 中元素的顺序就会被调换。
如何添加 "|" 并仍然保持 Set students 中的排序顺序?
代码如下:
Set<String> students = new HashSet<>();
Set<String> fn = new HashSet<>();
Set<String> nums = new HashSet<>();
List<String> firstNames = new ArrayList<>(fn);
Collections.sort(firstNames);
List<String> favNumbers = new ArrayList<>(nums);
Collections.sort(favNumbers);
for(int i=0; i<firstNames.size(); i++) {
students.add(firstNames.get(i) + "|" + favNumbers.get(i));
}
System.out.println(students);
使用... + " " + ...,顺序为[Joshua 4, Lyon 7],但如果添加"|" 代替" ",则当我想要并且应该是[Joshua|4, Lyon|7] 时,顺序变为[Lyon|7, Joshua|4]。
【问题讨论】:
-
我认为一个完全正确的方法是让一个学生 POJO 和一个自定义比较器一起使用单独的名字和姓氏字段进行排序。
-
@TimBiegeleisen 我怎样才能对我的方法进行修改并让它按照我想要的方式工作?
-
不太可能,但如果出于某种原因,一个学生的名字中有一根烟斗会怎样?
-
@TimBiegeleisen 更重要的是,学生和他们的分数是独立排序的。如果分数应该与相应的学生匹配,那么您的方法将解决这个问题。愿意将您的评论变成答案吗?
-
@JohnKugelman 我在下面尝试了一个答案。