私はあなたのother postを読んで、あなたが新しいJavaの開発者であるので、私は実行している例を与える必要性を見つけ印象を受けました。 これをIDEにコピーして実行するだけです。それは実行し、あなたのための概念の証明である出力を生成する必要があります。
私はここに使用していた入力は
String[] input = new String[]{ "1,2,1" ,
"1,1,2",
"1,2,3",
"1,3,1",
"1,1,1",
"1,3,3",
"1,1,3"};
そして、あなたはそれはあなたが説明するように繰り返しを持って見ることができるようです。あなたは出力が無いの繰り返しであり、要求通り 出力は
The triangle [Triangle{sides=[1, 1, 2]}] already exists!
The triangle [Triangle{sides=[1, 1, 3]}] already exists!
triangles = [Triangle{sides=[1, 2, 3]},
Triangle{sides=[1, 1, 3]},
Triangle{sides=[1, 1, 2]},
Triangle{sides=[1, 1, 1]},
Triangle{sides=[1, 3, 3]}]
です。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Triangle
{
private int[]sides;
public Triangle(int x, int y, int z)
{
sides = new int[]{x,y,z};
Arrays.sort(sides);
}
public Triangle(String ... args)
{
this(Integer.parseInt(args[0].trim()), Integer.parseInt(args[1].trim()), Integer.parseInt(args[2].trim()));
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Triangle triangle = (Triangle) o;
if (!Arrays.equals(sides, triangle.sides)) return false;
return true;
}
@Override
public int hashCode()
{
return sides != null ? Arrays.hashCode(sides) : 0;
}
@Override
public String toString()
{
return "Triangle{" +
"sides=" + Arrays.toString(sides) +
'}';
}
public static void main(String[] args) throws IOException
{
String[] input = new String[]{ "1,2,1" , "1,1,2", "1,2,3","1,3,1","1,1,1","1,3,3","1,1,3"};
Set<Triangle> triangles = new HashSet<Triangle>();
for (String s : input)
{
Triangle triangle = new Triangle(s.split(","));
if (triangles.contains(triangle))
{
System.out.println("The triangle [" + triangle + "] already exists!");
}
triangles.add(triangle);
}
System.out.println("triangles = " + triangles);
}
}
同様の辺を持つ2つの三角形をマージして、何を達成しようとしていますか? Stringインターンのようなヒープ上に余分なオブジェクトを割り当てるのを防ぐのですか?またはある種の計算(領域)でパフォーマンスのためにルックアップキャッシュを使用しようとしていますか? – wrschneider
1.辺「1,2,1」を持つ三角形を持つことは不可能です。 a + b> c、b + c> a、a + c> bである。 2.「三角形の辺を見つける」ことについてもっと詳しく説明する必要があります。何に基づいて? – khachik
私は三角形の辺を見つけるのに助けは必要ありません。それが私がそれについて詳しく述べなかった理由です。 – nmagerko