Изменение кода массива на вектор - PullRequest
0 голосов
/ 17 мая 2011

Итак, я пытался просмотреть все, но не могу найти много чего о том, что именно нужно изменить, чтобы преобразовать массив в вектор.Или, скорее, я просто не знаю, что именно искать.

Массив такой:

public class Member{

 private int id;
 private String name;
 private String[] books = new String[5];
 //replace the String books array with a Vector variable named books
 //that functions exactly the same way 

 public Member() {
     id = 0;
     name = "John Doe";
 }

 public Member(int pId, String pName) {
     id = pId;
     name = pName;
 }

 public int getId(){
     return id;
 }

 public void setId(int pId){
     id=pId;
 }

 public String getName(){
     return name;
 }

 public void setName(String pName){
     name=pName;
 }

 public String[] getBooks(){
     return books;
 }

 public void setBooks(String[] pBooks){
     books=pBooks;
 }

 public String toString(){
     StringBuffer buf = new StringBuffer();
     buf.append("ID: " + getId() + "  Member: " + getName() + "\n");
     for(int x=0; x<books.length; x++ ) {
         buf.append("Book: " + books[x] + "\n");
     }
     return buf.toString();
 }


/**
 * @param args
 */
public static void main(String[] args) {
    String[] list = {"Java Data Structures", "The Bible", "Grapes of Wrath",
                    "Goldfinger", "Sam I Am", "The Cat in the Hat", "Shawshenk Redemption",
                    "Green Eggs and Ham", "Linus and Lucy", "Abraham Lincoln"};

    Member m1 = new Member();
    m1.setId(431);
    m1.setName("William Wallace");      
    for(int i=0; i<5; i++) {
        m1.books[i] = list[i]; 
    }

    Member m2 = new Member(7010, "Bonny Clyde");
    for(int i=5; i<list.length; i++) {
        int x = i-5;
        m2.books[x] = list[i]; 
    }

    System.out.println(m1.toString());
    System.out.println();
    System.out.println(m2.toString());
}

}

Теперь я пытался преобразовать его, но чтобыЧестно говоря, я не знаю, что я делаю.

import java.util.Vector;

public class Member{

 private int id;
 private String name;
 private Vector<String> books = new Vector<String>(5);
 //replace the String books array with a Vector variable named books
 //that functions exactly the same way

 public Member() {
     id = 0;
     name = "John Doe";
 }

 public Member(int pId, String pName) {
     id = pId;
     name = pName;
 }

 public int getId(){
     return id;
 }

 public void setId(int pId){
     id=pId;
 }

 public String getName(){
     return name;
 }

 public void setName(String pName){
     name=pName;
 }

 public String getBooks(){
     return books;
 }

 public void setBooks(String pBooks){
     books=pBooks;
 }

 public String toString(){
     StringBuffer buf = new StringBuffer();
     buf.append("ID: " + getId() + "  Member: " + getName() + "\n");
     for(int x=0; x<books.length; x++ ) {
         buf.append("Book: " + books<x> + "\n");
     }
     return buf.toString();
 }


/**
 * @param args
 */
public static void main(String args) {
    String list = {"Java Data Structures", "The Bible", "Grapes of Wrath",
                    "Goldfinger", "Sam I Am", "The Cat in the Hat", "Shawshenk Redemption",
                    "Green Eggs and Ham", "Linus and Lucy", "Abraham Lincoln"};

    Member m1 = new Member();
    m1.setId(431);
    m1.setName("William Wallace");
    for(int i=0; i<5; i++) {
        m1.books<i> = list<i>;
    }

    Member m2 = new Member(7010, "Bonny Clyde");
    for(int i=5; i<list.length; i++) {
        int x = i-5;
        m2.books<x> = list<i>;
    }

    System.out.println(m1.toString());
    System.out.println();
    System.out.println(m2.toString());
}

}

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

1 голос
/ 17 мая 2011

Вы можете упаковать ваш массив в вектор следующим образом:

Vector<String> v = new Vector<String>(Arrays.asList(myList))

, и тогда ваш цикл станет

for (String s : v) {
  ...
}

Я бы использовал ArrayList над Vector, если вы нехотя есть веская причина использовать Vector.

1 голос
/ 17 мая 2011

Вот ваш пример использования вектора.Я настоятельно рекомендую использовать класс ArrayList , поскольку Vector больше не используется.

import java.util.Vector;

public class Member{

 private int id;
 private String name;
 private Vector<String> books = new Vector<String>();
 //replace the String books array with a Vector variable named books
 //that functions exactly the same way

 public Member() {
     id = 0;
     name = "John Doe";
 }

 public Member(int pId, String pName) {
     id = pId;
     name = pName;
 }

 public int getId(){
     return id;
 }

 public void setId(int pId){
     id=pId;
 }

 public String getName(){
     return name;
 }

 public void setName(String pName){
     name=pName;
 }

 public Vector<String> getBooks(){
     return books;
 }

 public void add(String book) {
    books.add(book);
 }


 public void setBooks(Vector<String> pBooks){
     books=pBooks;
 }

 public String toString(){
     StringBuffer buf = new StringBuffer();
     buf.append("ID: " + getId() + "  Member: " + getName() + "\n");
     for(int x=0; x<books.size(); x++ ) {
         buf.append("Book: " + books.get(x) + "\n");
     }
     return buf.toString();
 }


/**
 * @param args
 */
public static void main(String[] args) {
    String[] list = new String[]{"Java Data Structures", "The Bible", "Grapes of Wrath",
                    "Goldfinger", "Sam I Am", "The Cat in the Hat", "Shawshenk Redemption",
                    "Green Eggs and Ham", "Linus and Lucy", "Abraham Lincoln"};

    Member m1 = new Member();
    m1.setId(431);
    m1.setName("William Wallace");
    for(int i=0; i<5; i++) {
        m1.add(list[i]);
    }

    Member m2 = new Member(7010, "Bonny Clyde");
    for(int i=5; i<list.length; i++) {
        int x = i-5;
        m2.add(list[x]);
    }

    System.out.println(m1.toString());
    System.out.println();
    System.out.println(m2.toString());
}

}
0 голосов
/ 17 мая 2011

Алекс, Если ваш код не должен быть безопасным в многопоточной среде, как все предлагали использовать ArrayList.

В случае, если у вас есть параллельные операции, вы можете захотеть взглянуть наCollections.synchronizedList.Однако, проверьте некоторые ограничения использования этого , как указано здесь

Наконец, в некоторых ситуациях необходим вектор.Там я бы порекомендовал Vector<String> v = new Vector<String>(Arrays.asList(myList)), как предложил Майк ранее.

0 голосов
/ 17 мая 2011

Вы можете использовать Arrays.asList для преобразования массива в список.Vector - это список, но я подозреваю, что все, что вам нужно, это список.Хорошая идея - программировать на интерфейс List, а не на конкретный класс, такой как Vector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...