好吧,问题很简单,但我不知道怎么做。我试着逐个检查两个元素,但这不是最好的方法。我有一组圆形物体。数组有位置字段X和Y。我想遍历数组,检查所有元素是否在一条线上(水平或垂直)。我如何通过数组检查圆心是否在同一条线上。
我试着做这样的事情,看看圆圈是否在同一条垂直线上,但我说它需要一个元素与邻居。
void isCenterSameHorizOrVert(Circle[] c) {
for(int i = 0; i < c.length; i++) {
for(int j = i + 1; j < c.length - 1; j++) {
if(c[i].getPlanarX() == c[j].getPlanarX()) {
}
}
}
}
以下是我的方法:
package amedv;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.junit.Test;
class Circle {
int positionX;
int positionY;
public Circle(int positionX, int positionY) {
super();
this.positionX = positionX;
this.positionY = positionY;
}
public int getPositionX() {
return positionX;
}
public void setPositionX(int positionX) {
this.positionX = positionX;
}
public int getPositionY() {
return positionY;
}
public void setPositionY(int positionY) {
this.positionY = positionY;
}
}
class CircleHM {
HashMap hmCirlesX;
HashMap hmCirlesY;
public HashMap getHmCirlesX() {
return hmCirlesX;
}
public void setHmCirlesX(HashMap hmCirlesX) {
this.hmCirlesX = hmCirlesX;
}
public HashMap getHmCirlesY() {
return hmCirlesY;
}
public void setHmCirlesY(HashMap hmCirlesY) {
this.hmCirlesY = hmCirlesY;
}
}
public class CircleTest {
private Circle[] circles = new Circle[] {new Circle(1,2), new Circle(1,5), new Circle(6,7), new Circle(2,7), new Circle(3,8), new Circle(3,5)};
private HashMap<Integer, HashMap<Integer, ArrayList<Integer>>> hmCirlesX = new HashMap<Integer, HashMap<Integer, ArrayList<Integer>>>();
private HashMap<Integer, HashMap<Integer, ArrayList<Integer>>> hmCirlesY = new HashMap<Integer, HashMap<Integer, ArrayList<Integer>>>();
private boolean findCircleWithCenterSameHorizOrVert(Circle[] cirArr) {
if (cirArr.length == 0) {
return false;
}
int hashCode = cirArr.hashCode();
if (!hmCirlesX.containsKey(hashCode) && !hmCirlesY.containsKey(hashCode)) {
hmCirlesX.put(hashCode, new HashMap<Integer, ArrayList<Integer>>());
hmCirlesY.put(hashCode, new HashMap<Integer, ArrayList<Integer>>());
for (int i=0; i<circles.length; i++) {
ArrayList arrlCirclesX = hmCirlesX.get(hashCode).containsKey(circles[i].positionX) ? hmCirlesX.get(hashCode).get(circles[i].positionX) : new ArrayList();
arrlCirclesX.add(circles[i]);
hmCirlesX.get(hashCode).put(circles[i].positionX, arrlCirclesX);
ArrayList arrlCirclesY = hmCirlesY.get(hashCode).containsKey(circles[i].positionY) ? hmCirlesY.get(hashCode).get(circles[i].positionY) : new ArrayList();
arrlCirclesY.add(circles[i]);
hmCirlesY.get(hashCode).put(circles[i].positionY, arrlCirclesY);
}
}
return (hmCirlesX.size() > 0 && hmCirlesY.size() > 0);
}
private void showCenterSameHorizOrVert(Circle[] cirArr) {
if (findCircleWithCenterSameHorizOrVert(cirArr)) {
int hashCode = cirArr.hashCode();
HashMap<Integer, ArrayList<Integer>> hmX = hmCirlesX.get(hashCode);
HashMap<Integer, ArrayList<Integer>> hmY = hmCirlesY.get(hashCode);
Iterator itmX = hmX.entrySet().iterator();
while (itmX.hasNext()) {
Map.Entry hmArrListX = (Map.Entry)itmX.next();
ArrayList cirX = (ArrayList) hmArrListX.getValue();
System.out.println("Circles on the same X = " + hmArrListX.getKey());
for (int i=0; i < cirX.size(); i++) {
Circle c = (Circle) cirX.get(i);
System.out.println("c.positionX = " + c.positionX + " c.positionY = " + c.positionY);
}
System.out.println("");
}
System.out.println("");
System.out.println("");
Iterator itmY = hmY.entrySet().iterator();
while (itmY.hasNext()) {
Map.Entry hmArrListY = (Map.Entry)itmY.next();
ArrayList cirY = (ArrayList) hmArrListY.getValue();
System.out.println("Circles on the same Y = " + hmArrListY.getKey());
for (int i=0; i < cirY.size(); i++) {
Circle c = (Circle) cirY.get(i);
System.out.println("c.positionX = " + c.positionX + " c.positionY = " + c.positionY);
}
System.out.println("");
}
}
}
@Test
public void test() {
System.out.println("circles.length = " + circles.length);
System.out.println("");
showCenterSameHorizOrVert(circles);
}
}
它会给我一个结果:
circles.length = 6
Circles on the same X = 1
c.positionX = 1 c.positionY = 2
c.positionX = 1 c.positionY = 5
Circles on the same X = 2
c.positionX = 2 c.positionY = 7
Circles on the same X = 3
c.positionX = 3 c.positionY = 8
c.positionX = 3 c.positionY = 5
Circles on the same X = 6
c.positionX = 6 c.positionY = 7
Circles on the same Y = 2
c.positionX = 1 c.positionY = 2
Circles on the same Y = 5
c.positionX = 1 c.positionY = 5
c.positionX = 3 c.positionY = 5
Circles on the same Y = 7
c.positionX = 6 c.positionY = 7
c.positionX = 2 c.positionY = 7
Circles on the same Y = 8
c.positionX = 3 c.positionY = 8
我使用X和Y的整数来简化打印输出,请告诉我您需要将其替换为双精度。我将结果存储在基于数组哈希码的HashMap中,以避免每次运行此函数时循环整个数组,并在其中循环整个数组仅一次,并根据X和Y坐标将所有值放入两个HashMaps中(它根据此键对所有值进行分组),然后我只是循环生成具有分组值的HashMaps,以显示基于X或Y的同一行中的哪些对象。希望我的逻辑能帮助您根据需要调整它。
考虑上图。我想要一个小精灵查询,返回所有在它们之间有多条边的节点,如图所示。 该图是使用neo4j cypher查询获得的:MATCH(d:dest)-[r]-(n:cust),其中d,n,count(r)作为常用返回d,n,按常用描述极限5排序 例如:在RITUPRAKA…和Asia之间有8条多条边,因此查询返回了2个节点和边,对于其他节点也是如此。 注意:图中有其他节点,它们之间只有一条边,这
简而言之,我再次在网上找到了这个任务: 从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。 到目前为止,我编写了检查整数是否为素数的逻辑。主要的问题是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,就停止程序。所以,当我尝试添加循环来迭代输入并检查它们是否为整数素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。如果您有任何建议或批评,我将不胜感激,谢谢。
问题内容: 考虑以下列表: 我该如何实现? 我试过了: 但是,只有当我按一定顺序具有元组的元素时,它才起作用,这意味着它将导致以下结果: 问题答案: 您可以将元组视为图形中的边,而将目标视为在图形中查找连接的组件。然后,您可以简单地遍历顶点(元组中的项),并为尚未访问的每个顶点执行DFS生成组件: 输出: 注意,在上面,组件和组件中的元素都是随机顺序。
知道两个二进制文件是否相同(除了时间戳)的最简单方法是什么(在Ubuntu Linux上使用图形工具或命令行)?我不需要实际提取差异。我只需要知道他们是不是一样的。
问题内容: 假设我们有一个简单的查询,如下所示: 如果结果集中只有一条记录,我想将变量设置为该值。如果我们有两个或多个记录,我希望结果用逗号和空格分隔。编写此T-SQL代码的最佳方法是什么? 例子: 1条记录的结果集: 2条记录的结果集: 3条记录的结果集: 问题答案: 这将为您提供以逗号分隔的列表中的值列表
简而言之,我再次在网上找到了这个任务: 从键盘上输入整数,检查是否是质数。当你输入0时,程序结束。 到目前为止,我编写了检查整数是否为素数的逻辑。主要的障碍是,我应该从一个字符串中读取几个整数,如果最后一个整数是0,则停止程序。因此,当我试图添加一个循环来迭代输入并检查整数是否为素数时,我的逻辑不起作用,它只返回1个整数,没有其他整数。