Как я могу получить данные из двух векторов?

Я новичок в Java и первый, кто использовал вектор.

вход

A aaa bbb 

C dddd eeee fff

когда вы хотите vec.elementAt(1);

Вывод будет:

C ddd eee fff

Я не знаю, как использовать два вектора (имя и слово) для его реализации.

Мои мысли таковы:

       vec[0]             vec[1]
name   A                  C
word   aaa      bbb       dddd     eeee     ffff
       wvec[0]  wvec[1]   wvec[0]  wvec[1]  wvec[2]

уже неделю думаю над этой проблемой

Это мой код:

public class Name {
     Vector <String> name = new Vector<String>();
     ....
    while ( ... ) {
      vec.add(name);
      ...
    } // while
}


public class Word {
    Vector <String> wvec = new Vector<String>();
    while ( ... ) {
      wvec.add(word);     
    } // while
}


person Itati    schedule 21.06.2020    source источник
comment
Я предлагаю вам создать пользовательский объект.   -  person Harmandeep Singh Kalsi    schedule 21.06.2020
comment
Я действительно не думаю, что нам следует использовать Vector в 2020 году. Вместо этого используйте ArrayList. Если вам нужна безопасность потоков, используйте реализацию параллельного списка из util.concurrent.   -  person AminM    schedule 21.06.2020


Ответы (2)


Вы можете достичь сценария, как показано ниже:

Класс слов:

class Word{
    char name;
    Vector<String> words;
}

ТестКласс:

открытый класс TestClass { public static void main (String [] args) {

    Word word = new Word();
    word.name = 'A';
    word.words = new Vector<String>();
    word.words.add("aaa");
    word.words.add("bbb");
    
    Word word1 = new Word();
    word1.name = 'B';
    word1.words = new Vector<String>();
    word1.words.add("dddd");
    word1.words.add("eeee");
    word1.words.add("fff");
    
    Vector<Word> wordVector = new Vector<>();
    
    wordVector.add(word);
    wordVector.add(word1);
    System.out.println("Name" + "-----" + "Words");
for (int i = 0; i < wordVector.size(); i++) {
    System.out.print(wordVector.get(i).name + "------");
    for(int j=0;j<wordVector.get(i).words.size();j++) {
        System.out.print(wordVector.get(i).words.get(j)+" ");
    }
    System.out.println();
}
}

}

person Harmandeep Singh Kalsi    schedule 21.06.2020
comment
Должен ли он быть реализован в main ? - person Itati; 21.06.2020
comment
Я думаю, можно использовать другие классы без основного? - person Itati; 21.06.2020
comment
Что нужно реализовать в main? и Да, вы можете использовать класс без основного метода. Вы используете их как настраиваемый объект. - person Harmandeep Singh Kalsi; 21.06.2020
comment
почему вывод have[ , ] ? Могу ли я удалить его? - person Itati; 21.06.2020
comment
Да, можете изменить его соответствующим образом. - person Harmandeep Singh Kalsi; 21.06.2020
comment
Не подскажете, как его модифицировать? и это автоматически генерируется системой? - person Itati; 21.06.2020
comment
Можете ли вы показать мне результат один раз, пожалуйста, что вы получаете, чтобы я мог правильно направлять вас? - person Harmandeep Singh Kalsi; 21.06.2020
comment
вывод: A-----[aaa, bbb] B-----[dddd, eeee, fff] - person Itati; 21.06.2020
comment
Хорошо, как вы хотите, чтобы вывод был? - person Harmandeep Singh Kalsi; 21.06.2020
comment
без [ , ]. A-----aaa bbb B-----dddd eeee fff - person Itati; 21.06.2020
comment
Всегда пожалуйста . Счастливого обучения! Если вы удовлетворены ответом, не могли бы вы помочь проголосовать за него? Это поможет другим, если они попадут на этот вопрос, увидев решение, подобное этому. - person Harmandeep Singh Kalsi; 21.06.2020

Пример реализации, которая анализирует строковые строки и печатает данные, может быть следующим:

import java.util.*;

public class Example {
    
    static class Line {
        private String name;
        private Vector<String> words = new Vector<>();
        
        public void setName(String name) { this.name = name; }
        public void addWord(String word) { this.words.add(word); }
        
        public String getName() { return name; }
        public Vector<String> getWords() { return words; }
        
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("name:\t").append(name).append('\n');
            sb.append("words:\t");
            for (String word : words) {
                sb.append(word).append('\t');
            }
            sb.append("\n     \t");
            for (int i = 0, n = words.size(); i < n; i++) {
                sb.append("w[").append(i).append("]\t");
            }
            sb.append('\n');
            return sb.toString();
        }
    }

    private static Line parseLine(String src) {
        if (src == null) return null;
        Line line = new Line();
        String[] arr = src.split(" ");
        if (arr.length > 0) {
            line.setName(arr[0]);
            for (int i = 1; i < arr.length; i++) {
                line.addWord(arr[i]);
            }
        }
        return line;
    }
    
    public static void main(String []args) {
        
        String[] rawLines = {
            "A aaa bbb",
            "C dddd eeee fff"            
        };
        
        Vector<Line> lines = new Vector<>();
        for (String rawLine : rawLines) {
            Line line = parseLine(rawLine);
            lines.add(line);
            System.out.println(line);
        }    
    }
}

Этот код выводит следующий вывод:

name:   A
words:  aaa bbb 
        w[0]    w[1]    

name:   C
words:  dddd    eeee    fff 
        w[0]    w[1]    w[2]    
person Alex Rudenko    schedule 21.06.2020
comment
Код довольно хорош, но я хочу использовать два вектора вместо списка. - person Itati; 21.06.2020
comment
List в моем коде в качестве входных данных хранятся их строки, это не критично, я обновил ответ, чтобы использовать массив строк. - person Alex Rudenko; 21.06.2020