ورود

View Full Version : Vector class



starparham
چهارشنبه 06 اردیبهشت 1396, 19:23 عصر
با سلام
دوستان کسی میدونه کد زیر دقیقا چ کاری انجام میده؟؟؟
ممنون از کمکتون







public class Vector implements WritableComparable<Vector> {

private double[] vector;

public Vector() {
super();
}

public Vector(Vector v) {
super();
int l = v.vector.length;
this.vector = new double[l];
System.arraycopy(v.vector, 0, this.vector, 0, l);
}

public Vector(double x, double y) {
super();
this.vector = new double[] { x, y };
}

@Override
public void write(DataOutput out) throws IOException {
out.writeInt(vector.length);
for (int i = 0; i < vector.length; i++)
out.writeDouble(vector[i]);
}

@Override
public void readFields(DataInput in) throws IOException {
int size = in.readInt();
vector = new double[size];
for (int i = 0; i < size; i++)
vector[i] = in.readDouble();
}

@Override
public int compareTo(Vector o) {

boolean equals = true;
for (int i = 0; i < vector.length; i++) {
int c = vector[i] - o.vector[i];
if (c != 0.0d) {
return c;
}
return 0;
}
// get and set omitted

}

vahid-p
چهارشنبه 06 اردیبهشت 1396, 21:00 عصر
از اسمش مشخصه یک کلاس برای ذخیره و کار با ساختمان داده Vector یا همون بردار هست. همین!
یک سری متدهای کاربردی هم مثل مقایسه، ذخیره در فایل و خواندن از فایل رو هم داره

starparham
پنج شنبه 07 اردیبهشت 1396, 22:28 عصر
ممنون از پاسختون
اگه امکانش باشه ی کمی جزئی تر توضیح بدید ممنون میشم

vahid-p
جمعه 08 اردیبهشت 1396, 04:49 صبح
دوست عزیز جزئیاتی نداره، کار پیچیده ای انجام نمیده.
بستگی داره بخواید کجا استفاده کنید.
مثلا برای ساخت وکتور (یا همون بردار) دو بعدی مینویسید new Vector(1,2) .
برای ساخت بردارهای با ابعاد بیشتر، سازنده (constructor) نداره. ولی میتونید از فایل بخونید. هر چند خودتون هم میتونید تغییرش بدید.

البته اگر از بردار (Vector) میخواهید استفاده کنید، نیازی به استفاده از این کلاس ندارید (مگر اینکه دلیل دیگه ای داشته باشید) و خود جاوا کلاس Vector داره که با هر سایزی میتونید بسازید. اینکه اسمش بردار هست شما رو به اشتباه نندازه که فقط برای مسائل هندسی است. نه. دقیقا یک لیست هست.
اگر لینک مقابل رو بخونید https://www.tutorialspoint.com/java/java_vector_class.htm توضیحات خوبی در موردش داده.
گفته شبیه ArrayList هست (اگر باهاش آشنا هستید) و برای ذخیره داده ها استفاده میشه وقتی اندازه آرایتون رو نمیدونید. حتی در JavaDoc هم اومده:

Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList (https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) in place of Vector.
یعنی اگر نمیخواید در multi-threading استفاده کنید و باعث نشه thread ها باعث ایجاد خطا بشن، از Vector استفاده کنید، در غیر این صورت از ArrayList استفاده کنید. پس خیلی شبیه به همن.

starparham
جمعه 08 اردیبهشت 1396, 12:44 عصر
اها ، ممنون از راهنماییتون