Java 在维护结构的同时洗牌LinkedList
我有一个Java 在维护结构的同时洗牌LinkedList,java,list,shuffle,Java,List,Shuffle,我有一个链接列表以[1a、1b、2a、2b、3a、3b等]的形式存储,我想将其洗牌,以便\a和\b保持在一起。我知道你可以创建一个同时包含#a和#b的对象,然后将这些对象的链接列表洗牌,但我想知道是否有更方便的方法 谢谢你的帮助 使用Java8流可能是最方便的方式 下面是示例代码,运行10次以查看效果 有。您使用的是“shuffle”一词,实际上是对条目a和b进行排序。如果我的假设是正确的,您可以通过使用java.util.Collections.sort()来实现它,这样您就可以将定制的比较器
链接列表
以[1a、1b、2a、2b、3a、3b等]
的形式存储,我想将其洗牌,以便\a
和\b
保持在一起。我知道你可以创建一个同时包含#a
和#b
的对象,然后将这些对象的链接列表
洗牌,但我想知道是否有更方便的方法
谢谢你的帮助 使用Java8流可能是最方便的方式 下面是示例代码,运行10次以查看效果
有。您使用的是“shuffle”一词,实际上是对条目a和b进行排序。如果我的假设是正确的,您可以通过使用
java.util.Collections.sort()
来实现它,这样您就可以将定制的比较器实现类传递给sort函数。
下面给出了一个关于如何实现这一目标的示例
class LinkedListSort{
public static void main(String[] args)
{
LinkedList<String> list = new LinkedList<String>();
String linkedListDataString = "1a,1b,2a,2b,3a,3b";
for(String str : linkedListDataString.split(",")) {
list.add(str);
}
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String object1, String object2) {
String suffix1 = object1.substring(object1.length()-1);
String suffix2 = object2.substring(object2.length()-1);
return Collator.getInstance().compare(suffix1,suffix2);
}
});
System.out.println("Sorted list entries: ");
for(String e:list) {
System.out.println(e);
}
}
}
类LinkedListSort{
公共静态void main(字符串[]args)
{
LinkedList=新建LinkedList();
字符串linkedListDataString=“1a、1b、2a、2b、3a、3b”;
对于(字符串str:linkedListDataString.split(“,”)){
添加(str);
}
Collections.sort(list,newcomparator(){
@凌驾
公共整数比较(字符串对象1、字符串对象2){
字符串后缀1=object1.substring(object1.length()-1);
字符串后缀2=object2.substring(object2.length()-1);
返回Collator.getInstance();
}
});
System.out.println(“排序列表条目:”);
for(字符串e:列表){
系统输出打印ln(e);
}
}
}
还有一种更不方便的方法,手动操作。请在您的问题中添加预期结果。具体来说,您的建议是最方便的方法。如果您想使用(目前为止最方便的方式)并希望将1a
和1b
保持在一起,那么您需要一个值对象来保持在一起,并将这些对象洗牌。
class LinkedListSort{
public static void main(String[] args)
{
LinkedList<String> list = new LinkedList<String>();
String linkedListDataString = "1a,1b,2a,2b,3a,3b";
for(String str : linkedListDataString.split(",")) {
list.add(str);
}
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String object1, String object2) {
String suffix1 = object1.substring(object1.length()-1);
String suffix2 = object2.substring(object2.length()-1);
return Collator.getInstance().compare(suffix1,suffix2);
}
});
System.out.println("Sorted list entries: ");
for(String e:list) {
System.out.println(e);
}
}
}