小编Was*_*doo的帖子

如何在Ruby中实现私有内部类

来自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对象,即使它被声明为私有?

ruby class private-class

5
推荐指数
1
解决办法
1842
查看次数

排序的Java自定义排序

什么是最好的(在时间和空间效率方面)实现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)

java sorting algorithm

-1
推荐指数
1
解决办法
1453
查看次数

标签 统计

algorithm ×1

class ×1

java ×1

private-class ×1

ruby ×1

sorting ×1