来自Java,我试图在Ruby中实现LinkedList.我在Java中实现它的常用方法是使用一个名为LinkedList的类和一个名为Node的私有内部类,其中LinkedList的每个对象都是Node对象.
class LinkedList
private
class Node
attr_accessor :val, :next
end
end
Run Code Online (Sandbox Code Playgroud)
我不想将Node类暴露给外部世界.但是在Ruby中使用此设置,我可以使用以下方法访问LinkedList类之外的私有Node类对象 -
node = LinkedList::Node.new
Run Code Online (Sandbox Code Playgroud)
我知道,使用Ruby 1.9,我们可以使用private_constant方法将Node指定为私有常量.但我想知道这是否是实现这一目标的正确方法?另外,为什么我能够在LinkedList类之外创建Node对象,即使它被声明为私有?
什么是最好的(在时间和空间效率方面)实现Java比较器使用自定义排序对集合进行排序的方法.例如 - 我想使用以下排序对数组进行排序 -
RWQOJMVAHBSGZXNTCIEKUPDYFL
我有以下Java代码,它按预期工作,但不确定是否有任何其他有效的方法来做同样的事情.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.lang.Math;
public class DiffSort {
private static String order = "RWQOJMVAHBSGZXNTCIEKUPDYFL";
// sort with comparator
public static Comparator<String> diffNaturalOrder = new Comparator<String>() {
public int compare(String v, String w) {
int diff = 0, iter = 0;
Integer index1, index2;
Integer len1 = v.length();
Integer len2 = w.length();
int len = Math.min(len1, len2); // lesser of 2 strings
for(int i=0; i<len; i++) {
index1 = …Run Code Online (Sandbox Code Playgroud)