如何在单个数组中查找长度为5的副本。JAVA
我创建了一个数组,然后以五个为一组进行打印。然后我希望能够搜索数组5,看看是否有任何重复。我试过了,但我只能想办法按每个值搜索,而不是按五个值搜索。如果有人能给我指出正确的方向,那就太好了。谢谢如何在单个数组中查找长度为5的副本。JAVA,java,Java,我创建了一个数组,然后以五个为一组进行打印。然后我希望能够搜索数组5,看看是否有任何重复。我试过了,但我只能想办法按每个值搜索,而不是按五个值搜索。如果有人能给我指出正确的方向,那就太好了。谢谢 public class findPat { static int arr [] = new int [10]; static int st = 1; static int end = 56; static double t1;
public class findPat {
static int arr [] = new int [10];
static int st = 1;
static int end = 56;
static double t1;
static double t2;
public static void main(String[] args){
t1=System.currentTimeMillis();
for(int n=0; n<100; n++){
for (int i=0; i<arr.length; i++)
arr[i]= (int) (Math.random()* (end-st +1)) +st;
for (int i=0; i<5; i++){
if (i%5==0)
System.out.println();
System.out.print("\t" + arr[i]);}
}
t2=System.currentTimeMillis();
System.out.println();
System.out.println();
System.out.println("\t" + "Total run time is " + ((t2-t1)) + "ms");
}
}
但是,每行都在同一数组中,但一次只打印5行。
控制台将不仅仅有这几行。我希望能够搜索数组,并对照其他行检查每一行,以查看它出现了多少次(如果出现)。您可以使用
哈希表来实现这一点。以您的代码为基础,我已经编写了一个示例实现,但是在不知道您要做什么的情况下,我无法判断这是否是您要寻找的
import java.util.Hashtable;
public class findPat {
static final int COUNT = 100;
static Hashtable<String, Integer> compareSet = new Hashtable<String, Integer>();
static String groupInteger = "";
static int arr [] = new int [5];
static int st = 1;
static int end = 56;
static double t1;
static double t2;
public static void main(String[] args) {
t1=System.currentTimeMillis();
for(int n = 0; n < COUNT; n++){
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()* (end - st + 1)) + st;
}
for (int i = 1; i <= 5; i++) {
groupInteger += arr[i-1];
System.out.print("\t" + arr[i-1]);
if (i % 5 == 0) {
System.out.println();
if (compareSet.containsKey(groupInteger)) {
System.out.println("duplicate found");
int currentCount = compareSet.get(groupInteger);
compareSet.put(groupInteger, currentCount + 1);
} else {
compareSet.put(groupInteger, 1);
}
groupInteger = "";
}
}
}
t2=System.currentTimeMillis();
System.out.println();
System.out.println();
System.out.println("\t" + "Total run time is " + ((t2 - t1)) + "ms");
}
}
import java.util.Hashtable;
公共类findPat{
静态最终整数计数=100;
静态哈希表比较集=新哈希表();
静态字符串groupInteger=“”;
静态整数arr[]=新整数[5];
静态int st=1;
静态int-end=56;
静态双t1;
静态双t2;
公共静态void main(字符串[]args){
t1=System.currentTimeMillis();
对于(int n=0;n 对于(int i=1;i)你说的“按5搜索”是什么意思?我不理解这个问题。请提供一个示例输入和一个示例输出来澄清这个问题。有很多方法,看这个线程:我编辑了这个问题,也许它更有意义。目前,您的代码打印了10个随机数数组中的前5个随机数。它重复了100次。您的问题建议您希望搜索5个值的重复序列。是否可以提供一个关于您要完成的任务的更清晰的概念,或者提供一个代码示例来更清楚地显示您正在尝试执行的操作?这不是100%,但它确实让我找到了正确的方向,非常感谢。我运行了该程序,但是,当我打印compareSet以查看h值是重复的,我得到这个{3623955=1,311471043=1,191644650=1,2754351=1,34492846=1,431540317=1,5=1,3649244028=1,748465055=1,1141473319=1}但是数字与数组中的数字不匹配,它从数组中的任意点开始。对不起,我的错误,我假设您的代码在数组中每五个项目后打印一次,但是由于I%5是0,只有当一个数字可除以5,第五个元素具有索引4时,它才存储第一个元素,后面是5个元素的集合ns进一步(第2-6,第7-11,…)我已经编辑了我的代码。
import java.util.Hashtable;
public class findPat {
static final int COUNT = 100;
static Hashtable<String, Integer> compareSet = new Hashtable<String, Integer>();
static String groupInteger = "";
static int arr [] = new int [5];
static int st = 1;
static int end = 56;
static double t1;
static double t2;
public static void main(String[] args) {
t1=System.currentTimeMillis();
for(int n = 0; n < COUNT; n++){
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random()* (end - st + 1)) + st;
}
for (int i = 1; i <= 5; i++) {
groupInteger += arr[i-1];
System.out.print("\t" + arr[i-1]);
if (i % 5 == 0) {
System.out.println();
if (compareSet.containsKey(groupInteger)) {
System.out.println("duplicate found");
int currentCount = compareSet.get(groupInteger);
compareSet.put(groupInteger, currentCount + 1);
} else {
compareSet.put(groupInteger, 1);
}
groupInteger = "";
}
}
}
t2=System.currentTimeMillis();
System.out.println();
System.out.println();
System.out.println("\t" + "Total run time is " + ((t2 - t1)) + "ms");
}
}