请将以下ruby代码改成php或者java

问题描述

# compl1.rb - Redis autocomplete example# download female-names.txt from http://antirez.com/misc/female-names.txtrequire 'rubygems'require 'redis'r = Redis.new# Create the completion sorted setif !r.exists(:compl) puts "Loading entries in the Redis DBn" File.new('female-names.txt').each_line{|n| n.strip! (1..(n.length)).each{|l| prefix = n[0...l] r.zadd(:compl,0,prefix) } r.zadd(:compl,0,n+"*") }else puts "NOT loading entries, there is already a 'compl' keyn"end# Complete the string "mar"def complete(r,prefix,count) results = [] rangelen = 50 # This is not random, try to get replies < MTU size start = r.zrank(:compl,prefix) return [] if !start while results.length != count range = r.zrange(:compl,start,start+rangelen-1) start += rangelen break if !range or range.length == 0 range.each {|entry| minlen = [entry.length,prefix.length].min if entry[0...minlen] != prefix[0...minlen] count = results.count break end if entry[-1..-1] == "*" and results.length != count results << entry[0...-1] end } end return resultsendcomplete(r,"marcell",50).each{|res| puts res}

解决方案

[/package nosql;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import redis.clients.jedis.Jedis;public class RedisDemo {private final static String COMPLETE_KEY = "compl";private final static Jedis jedis = new Jedis("192.168.118.2");public static void main(String[] args) throws Exception {if(jedis.exists(COMPLETE_KEY)) {System.err.println("NOT loading entries, there is already a '" + COMPLETE_KEY + "' keyn");} else {setupCompletedSet();}Set<String> set = complete("ma" , 50);for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) {System.out.println(iterator.next());}}private static void setupCompletedSet() throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(RedisDemo.class.getResourceAsStream("female-names.txt")));String line = null;while((line = br.readLine()) != null) {for(int i = 1 ; i < line.length(); i++) {String prefix = line.substring(0, i);jedis.zadd(COMPLETE_KEY, 0, prefix);}jedis.zadd(COMPLETE_KEY, 0, line + "*");}System.out.println("finish to add all values to zset");}private static Set<String> complete(String prefix , int count) {Set<String> results = new HashSet<String>();int rangeLength = 50; // This is not random, try to get replies < MTU sizeLong start = jedis.zrank(COMPLETE_KEY, prefix);if (start != null && start > 0) {int begin = start.intValue();while(results.size() != rangeLength) {Set<String> rs = jedis.zrange(COMPLETE_KEY,begin,begin + rangeLength-1); begin += rangeLength;if (rs == null || rs.size() == 0) {break;}for (Iterator<String> iterator = rs.iterator(); iterator.hasNext();) {String entry = (String) iterator.next();int min = Math.min(entry.length(), prefix.length());if (!entry.substring(0, min).equals(prefix.substring(0, min))) {count = rs.size();break;}if (entry.substring(entry.length() - 1).equals("*") && results.size() != count) {results.add(entry.substring(0, entry.length()-1));}}}}return results;}}code]试试,看行不行!
解决方案二:
估计是看到分多吧,哈哈,不过我比较关心楼主翻译成java的用意啊。。。。
解决方案三:
有意思,还真是一模一样啊
解决方案四:
楼上没搞错吧,完全复制我的代码!
解决方案五:
我测试过用我这个[/ package nosql; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import redis.clients.jedis.Jedis; public class RedisDemo { private final static String COMPLETE_KEY = "compl"; private final static Jedis jedis = new Jedis("192.168.118.2"); public static void main(String[] args) throws Exception { if(jedis.exists(COMPLETE_KEY)) { System.err.println("NOT loading entries, there is already a '" + COMPLETE_KEY + "' keyn"); } else { setupCompletedSet(); } Set<String> set = complete("ma" , 50); for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) { System.out.println(iterator.next()); } } private static void setupCompletedSet() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(RedisDemo.class.getResourceAsStream("female-names.txt"))); String line = null; while((line = br.readLine()) != null) { for(int i = 1 ; i < line.length(); i++) { String prefix = line.substring(0, i); jedis.zadd(COMPLETE_KEY, 0, prefix); } jedis.zadd(COMPLETE_KEY, 0, line + "*"); } System.out.println("finish to add all values to zset"); } private static Set<String> complete(String prefix , int count) { Set<String> results = new HashSet<String>(); int rangeLength = 50; // This is not random, try to get replies < MTU size Long start = jedis.zrank(COMPLETE_KEY, prefix); if (start != null && start > 0) { int begin = start.intValue(); while(results.size() != rangeLength) { Set<String> rs = jedis.zrange(COMPLETE_KEY,begin,begin + rangeLength-1); begin += rangeLength; if (rs == null || rs.size() == 0) { break; } for (Iterator<String> iterator = rs.iterator(); iterator.hasNext();) { String entry = (String) iterator.next(); int min = Math.min(entry.length(), prefix.length()); if (!entry.substring(0, min).equals(prefix.substring(0, min))) { count = rs.size(); break; } if (entry.substring(entry.length() - 1).equals("*") && results.size() != count) { results.add(entry.substring(0, entry.length()-1)); } } } } return results; } } code]

时间: 2024-07-29 06:09:42

请将以下ruby代码改成php或者java的相关文章

c++ 编程问题-C++程序 能否将下面代码改成用链表写的

问题描述 C++程序 能否将下面代码改成用链表写的 #include #include #include #include #include #include using namespace std; const int Maxb=10000; //最多的财务收支次数 //财务类,实现对财务的描述,财务的编号,使用者等 class Finance { private: int tag; //删除标记 1:已删 0:未删 int no;//财务编号 char name[20]; //姓名 int

php pdf 上传-代码改成pdf上传路径成功,但内容无法上传,哪位大神帮忙改改

问题描述 代码改成pdf上传路径成功,但内容无法上传,哪位大神帮忙改改 文档管理 <body style="text-align:center;"> <div data-role="page" id="pageone"> <div data-role="content"> <div data-role="navbar"> <ul> <li&g

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

修改vba-修改VBA分割WORD代码 改成文件名为知道区域文字

问题描述 修改VBA分割WORD代码 改成文件名为知道区域文字 Sub SplitEveryFivePagesAsDocuments() Dim oSrcDoc As Document, oNewDoc As Document Dim strSrcName As String, strNewName As String Dim oRange As Range Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer,

c++ opencv 分裂合并-求大神帮忙把代码改成调用opencv库的,谢谢。

问题描述 求大神帮忙把代码改成调用opencv库的,谢谢. include using namespace std; #include //需要使用堆栈,对堆栈进行操作 #include "conio.h" include "viLib.h" // 包含头文件 pragma comment( lib, "viLib.lib" ) // 包含viLib.lib库 include "viImage.h" // 包含头文件 prag

求大神将下面这个c代码改成c#的。。。跪谢

问题描述 求大神将下面这个c代码改成c#的...跪谢 const WORD wCRCTalbeAbs[] = {0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400, }; WORD CRC16_2(BYTE* pchMsg, WORD wDataLen) { WORD wCRC = 0xFFFF;

游戏-求大神~帮忙改一下。把这串代码改成函数的方式(问题是:用C语言函数制作石头剪刀布)

问题描述 求大神~帮忙改一下.把这串代码改成函数的方式(问题是:用C语言函数制作石头剪刀布) #include #include #include #include void printMenu(void) { printf("tt -------------------------------------------n"); printf("tt| 石头剪刀布游戏 |n"); printf("tt| ---------------------------

c-把我原来做的杭电AC代码改成C竟然出错了是怎么回事啊

问题描述 把我原来做的杭电AC代码改成C竟然出错了是怎么回事啊 今天又重新看了下之前做的杭电ACM题,遇到一个问题,求大神解决下.我原来是用C++做的,今天我只是把C++改成了C,就出错了,是怎么回事啊! 杭电2008 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2008 C #include int main() { int n; while(scanf("%d",&n)) { if(n==0) break; double a[n

ruby-怎么能把这段Ruby代码改的更像Ruby的

问题描述 怎么能把这段Ruby代码改的更像Ruby的 def match_standard?() standard = StandardBodyGrith.find_by_leight_and_sex(1700,'M') print standard print shoulder is_match = Array.new(6) is_match[0] = shoulder < standard.shoulder is_match[1] = chest < standard.chest is_m