powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите реализовать логику на Java.2 [Коллекции]
16 сообщений из 16, страница 1 из 1
Помогите реализовать логику на Java.2 [Коллекции]
    #38354491
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
package Work;
import java.util.ArrayList;
import java.util.List;

/**....*/
public class Work {
    public static void main(String[] args) {
    List<String> asu = new ArrayList<String>();
        for (int j=0;j<10;j++) {
        for (int i=0;i<2;i++){ asu.add("M1");}
        asu.add("M2");
        asu.add("M3");
        asu.add("M4");
        asu.add("M5");       }
        System.out.println("Asu size :"+asu.size());

    List<String> rzs = new ArrayList<String>();
    for (int j=0;j<5;j++) {
        for (int i=0;i<2;i++){ rzs.add("M1");}
        rzs.add("M2");
        rzs.add("M3");
        rzs.add("M4");
        rzs.add("M5");       }
     for (int j=0;j<3;j++) {
        for (int i=0;i<2;i++){ rzs.add("M1M2");}
        rzs.add("M2M3");
        rzs.add("M3M4");
        rzs.add("M4M5");
        }
    for (int j=0;j<2;j++) {
       for (int i=0;i<2;i++){ rzs.add("M1M2M3");}
        rzs.add("M2M3M4");
        rzs.add("M3M4M5");
        rzs.add("M1M4M5");
        rzs.add("M1M2M5");
        }
        System.out.println("Rzs size: "+rzs.size());

    for (int i=1;i<=asu.size();i++){

    }

}


}


Три вопроса:
Во-первых. Как реализовать, чтобы список(rzs) заполнялся элементами M1,M2,M3,M4,M5 и всех их комбинациями. Потому что, что я написал слишком похоже на дерь... .
Во-вторых. Как сравнивать элементы из списков.
В-третьих. Как в сравнении находить, что элемент M1 из 1списка(asu), является подстрокой элемента M1M2M3 из 2списка(rzs)
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354499
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ое, думаю можно реализовать с помощью унаследованного метода equals, ну а как быть, если нужно чтобы 3ий пункт выполнялся
да и вообще, если удалять одинаковые записи не стоит(потому что элементы передвинутся, да и ошибки полезут) может не ArrayList?
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354565
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaa,

сформулируйте задачу в математическом виде (в терминах множеств), а уж потом подбирайте реализацию. Возможно, окажется, что вместо строк типа "M1M2" лучше использовать битовые шкалы. А то у меня сильное подозрение, что вы выбрали неадекватную реализацию, попали в тупик, и теперь зовете других разделить вашу участь.
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354570
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfq,
Просто я не совсем близко знаком со всеми классами в Java. (3-ий день только изучаю)
Реализация возможно не самая лучшая, так как повторяющиеся значения и каждый раз будут сравнивать - совсем не гуд.
Но интересует пока реализация на Массиве строк или на Списке на массиве строк.
-
... Пока никто не отвечал я вспомнил еще про одну особенность. Что просто так из списка не удалишь. Идет смещение элементов и появится ошибка о целостности данных.
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354601
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class work {
    public static void main(String[] args) {
         String[] asu = {"M1","M1","M1","M3","M4","M5","M1","M1","M1","M4","M5","M5"};
         String[] rzs = {"M1","M2","M3","M4","M5",
                "M1M2","M1M3","M1M4","M1M5","M2M3","M2M4","M2M5","M3M4","M3M5","M4M5"
                ,"M1M2M3","M1M2M4","M1M2M5","M1M3M4","M1M3M4","M1M4M5","M2M4","M2M5"};
        System.out.println(Arrays.deepToString(asu));
        System.out.println(Arrays.deepToString(rzs));
      for (int i=0; i<asu.length;i++){  System.out.println("Итерация: "+i);
        for (int j=0; j<rzs.length;j++) {
        if (asu[i].matches(rzs[j])) {
            System.out.println(i+" элемент("+asu[i]+") в ASU равен "+j+" элементу("+rzs[j]+") в RZS");
            asu[i]=""; rzs[j]="";
        }


Результат
Итерация: 0
0 элемент(M1) в ASU равен 0 элементу(M1) в RZS
Итерация: 1
Итерация: 2
Итерация: 3
3 элемент(M3) в ASU равен 2 элементу(M3) в RZS
Итерация: 4
4 элемент(M4) в ASU равен 3 элементу(M4) в RZS
Итерация: 5
5 элемент(M5) в ASU равен 4 элементу(M5) в RZS
Итерация: 6
Итерация: 7
Итерация: 8
Итерация: 9
Итерация: 10
Итерация: 11

( asu[i].matches(rzs[j]) ) как заставить его работать для массива строк?
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354603
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaa,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Set<String> elements = new HashSet<String>();
List<String> combinations = new ArrayList<String>();
elements.add("M1");
elements.add("M2");
elements.add("M3");
elements.add("M4");
elements.add("M5");
for (String a: elements) {
	for (String b: elements) {
		for (String c: elements) {
			if (!a.equals(b) && !b.equals(c) && !c.equals(a)) {
				combinations.add(a + b + c);
			}
		}
	}
}
System.out.println(combinations);
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354617
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
спасибо за удобный способ соединить. Там еще 2 вопроса.
А пока у меня не получается проделать даже с массивом строк
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package homeWork;
import java.util.Arrays;

public class work {
    String[] asu = {"M1","M1","M1","M3","M4","M5","M1","M1","M1","M4","M5","M5"};
    String[] rzs = {"M1","M2","M3","M4","M5",
            "M1M2","M1M3","M1M4","M1M5","M2M3","M2M4","M2M5","M3M4","M3M5","M4M5"
            ,"M1M2M3","M1M2M4","M1M2M5","M1M3M4","M1M3M4","M1M4M5","M2M4","M2M5"};

    public static void main(String[] args) {

    }

    public void mywork() {

        System.out.println(Arrays.deepToString(rzs));
        System.out.println(Arrays.deepToString(asu));
      for (int i=0; i<asu.length;i++){  System.out.println("Итерация: "+i);
        for (int j=0; j<rzs.length;j++) {
        if (asu[i].matches(mString(j))) {
            System.out.println(i+" элемент ("+asu[i]+") в ASU равен "+j+" элементу ("+rzs[j]+") в RZS");
            asu[i]=""; rzs[j]="";
        }     }                } }

     String mString(int newJ){
            return rzs[newJ];
 
    }
}


Обязательно всю логику писать в main. Но он static и не позволяет мне использовать нестат. метод внутри него.
А если писать не в нем. То результат 0. Если сделать rzs[j].toString() тоже не срабатывает.
Как сделать вхождение строки в строку из массива(((
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354619
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaaОбязательно всю логику писать в main. Но он static и не позволяет мне использовать нестат. метод внутри него.
Чувак, ты в статике создай объект класса и из него вызови свой нестат. метод.
Код: java
1.
2.
3.
4.
public static void main(String[] args) {
        work bebebe = new work();
        bebebe.mywork();
}
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354626
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-прежнему не знаю как выцепить подстроку из объекта.
массив строк

for (int i=0; i<asu.length;i++){ System.out.println("Итерация: "+i);
for (int j=0; j<rzs.length;j++) {
if (asu[i].matches(rzs[j].toString())) {
System.out.println(i+" элемент ("+asu[i]+") в ASU равен "+j+" элементу ("+rzs[j]+") в RZS");
asu[i]=""; rzs[j]="";
Исходный кодpackage Homework04082013;
import java.util.Arrays;

public class work {
String[] asu = {"M1","M1","M1","M3","M4","M5","M1","M1","M1","M4","M5","M5"};
String[] rzs = {"M1","M2","M3","M4","M5",
"M1M2","M1M3","M1M4","M1M5","M2M3","M2M4","M2M5","M3M4","M3M5","M4M5"
,"M1M2M3","M1M2M4","M1M2M5","M1M3M4","M1M3M4","M1M4M5","M2M4","M2M5"};

public static void main(String[] args) {
work bebebe = new work();
bebebe.mywork();
}

public void mywork() {

System.out.println(Arrays.deepToString(rzs));
System.out.println(Arrays.deepToString(asu));
for (int i=0; i<asu.length;i++){ System.out.println("Итерация: "+i);
for (int j=0; j<rzs.length;j++) {
if (asu[i].matches(rzs[j].toString())) {
System.out.println(i+" элемент ("+asu[i]+") в ASU равен "+j+" элементу ("+rzs[j]+") в RZS");
asu[i]=""; rzs[j]="";
} } } }


}
вывод:[M1, M2, M3, M4, M5, M1M2, M1M3, M1M4, M1M5, M2M3, M2M4, M2M5, M3M4, M3M5, M4M5, M1M2M3, M1M2M4, M1M2M5, M1M3M4, M1M3M4, M1M4M5, M2M4, M2M5]
[M1, M1, M1, M3, M4, M5, M1, M1, M1, M4, M5, M5]
Итерация: 0
0 элемент (M1) в ASU равен 0 элементу (M1) в RZS
Итерация: 1
Итерация: 2
Итерация: 3
3 элемент (M3) в ASU равен 2 элементу (M3) в RZS
Итерация: 4
4 элемент (M4) в ASU равен 3 элементу (M4) в RZS
Итерация: 5
5 элемент (M5) в ASU равен 4 элементу (M5) в RZS
Итерация: 6
Итерация: 7
Итерация: 8
Итерация: 9
Итерация: 10
Итерация: 11

Список из массива строк

for (int i=0;i<asu.size();i++){
for (int j=0;j<rzs.size();j++) {
if ((asu.get(i).equals(rzs.get(j))) || asu.get(i).contains(rzs.get(j)))
{ System.out.println("YAaHO! Element("+asu.get(i)+") ASU = Element("+rzs.get(j)+") RZS");
asu.remove(i); rzs.remove(j);
}
Исходный кодpackage version1;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: Eldar
* Date: 05.08.13
* Time: 0:44
* To change this template use File | Settings | File Templates.
*/
public class www {
public static void main(String[] args) {
List<String> asu = new ArrayList<String>();
for (int j=0;j<10;j++) {
for (int i=0;i<2;i++){ asu.add("M1");}
asu.add("M2");
asu.add("M3");
asu.add("M4");
asu.add("M5"); }
System.out.println("Asu size :"+asu.size());

List<String> rzs = new ArrayList<String>();
for (int j=0;j<5;j++) {
for (int i=0;i<2;i++){ rzs.add("M1");}
rzs.add("M2");
rzs.add("M3");
rzs.add("M4");
rzs.add("M5"); }
for (int j=0;j<3;j++) {
for (int i=0;i<2;i++){ rzs.add("M1M2");}
rzs.add("M2M3");
rzs.add("M3M4");
rzs.add("M4M5");
}
for (int j=0;j<2;j++) {
for (int i=0;i<2;i++){ rzs.add("M1M2M3");}
rzs.add("M2M3M4");
rzs.add("M3M4M5");
rzs.add("M1M4M5");
rzs.add("M1M2M5");
}
System.out.println("Rzs size: "+rzs.size());

for (int i=0;i<asu.size();i++){
for (int j=0;j<rzs.size();j++) {
if ((asu.get(i).equals(rzs.get(j))) | asu.get(i).contains(rzs.get(j)))
{ System.out.println("YAaHO! Element("+asu.get(i)+") ASU = Element("+rzs.get(j)+") RZS");
asu.remove(i); rzs.remove(j);
}
}
}
}


}


вывод:
Asu size :60
Rzs size: 57
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M2) ASU = Element(M2) RZS
YAaHO! Element(M3) ASU = Element(M3) RZS
YAaHO! Element(M4) ASU = Element(M4) RZS
YAaHO! Element(M5) ASU = Element(M5) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M2) ASU = Element(M2) RZS
YAaHO! Element(M3) ASU = Element(M3) RZS
YAaHO! Element(M4) ASU = Element(M4) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M2) ASU = Element(M2) RZS
YAaHO! Element(M3) ASU = Element(M3) RZS
YAaHO! Element(M5) ASU = Element(M5) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M2) ASU = Element(M2) RZS
YAaHO! Element(M4) ASU = Element(M4) RZS
YAaHO! Element(M5) ASU = Element(M5) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M3) ASU = Element(M3) RZS
YAaHO! Element(M4) ASU = Element(M4) RZS
YAaHO! Element(M5) ASU = Element(M5) RZS
YAaHO! Element(M1) ASU = Element(M1) RZS
YAaHO! Element(M2) ASU = Element(M2) RZS
YAaHO! Element(M4) ASU = Element(M4) RZS
YAaHO! Element(M3) ASU = Element(M3) RZS
YAaHO! Element(M5) ASU = Element(M5) RZS

в одном и другом случае, находит только элементы M1 --> M1, а вхождение M1 --/--> M1M2 не находит
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354640
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaa,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
String[] asu = {
    "M1","M1","M1","M3","M4","M5","M1","M1","M1","M4","M5","M5"
};
String[] rzs = {
    "M1","M2","M3","M4","M5",
    "M1M2","M1M3","M1M4","M1M5","M2M3","M2M4","M2M5","M3M4","M3M5","M4M5",
    "M1M2M3","M1M2M4","M1M2M5","M1M3M4","M1M3M4","M1M4M5","M2M4","M2M5"
};
for (String asuElem: asu) {
	for (String rzsElem: rzs) {
		if (rzsElem.indexOf(asuElem) != -1) { // подстрока найдена!
			System.out.printf("Подстрока '%s' содержится в строке '%s'%n", asuElem, rzsElem);
		}
	}
}
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354642
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
Спасибо, работает. Надо еще понять как так:)
Еще есть вопрос. Почему в IntelliJ Idea 12 (jdk1.7) ваш код не печатает ничего, а в compileonline.com все успешно работает?
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354644
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема вашего решения, что не удалить потом элементы эти, и они будут повторять, то есть для одного элемента из ASU находить несколько из RZS, это не правильно
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354649
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaa,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
String[] asu = {
		"M1","M1","M1","M3","M4","M5","M1","M1","M1","M4","M5","M5"
};
String[] rzs = {
		"M1","M2","M3","M4","M5",
        "M1M2","M1M3","M1M4","M1M5","M2M3","M2M4","M2M5","M3M4","M3M5","M4M5",
        "M1M2M3","M1M2M4","M1M2M5","M1M3M4","M1M3M4","M1M4M5","M2M4","M2M5"
};
List<String> rzsList = new ArrayList<>();
for (String rzsElem: rzs) {
	rzsList.add(rzsElem);
}
System.out.println(rzsList);
for (String asuElem: asu) {
	Iterator<String> rzsIter = rzsList.iterator();
	while (rzsIter.hasNext()) {
		String rzsElem = rzsIter.next(); 
		if (rzsElem.indexOf(asuElem) != -1) {
			System.err.printf("Подстрока '%s' содержится в строке '%s'%n", asuElem, rzsElem);
			rzsIter.remove();
		}
	}
}
System.out.println(rzsList);
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354651
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
спасибо)
но в моих унылых записях было :
уныние 1for (int i=0; i<asu.length;i++){ System.out.println("Итерация: "+i);
for (int j=0; j<rzs.length;j++) {
if (asu[i].matches(rzs[j].toString())) {
System.out.println(i+" элемент ("+asu[i]+") в ASU равен "+j+" элементу ("+rzs[j]+") в RZS");
asu[i]=""; rzs[j]="" ;

asu[i]=""; rzs[j]=""
уныние 2for (int i=0;i<asu.size();i++){
for (int j=0;j<rzs.size();j++) {
if ((asu.get(i).equals(rzs.get(j))) || asu.get(i).contains(rzs.get(j)))
{ System.out.println("YAaHO! Element("+asu.get(i)+") ASU = Element("+rzs.get(j)+") RZS");
asu.remove(i); rzs.remove(j); }

asu.remove(i); rzs.remove(j);
Но, я не смею больше вас напрягать. И так вы проделали огромную работу. Спасибо большое.
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354728
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите решить задачу.ЗадачаЕсть массив строк(asu) - M1,M2,M3... , а так же массив строк (rzs) - M1,M2,M3 и все возможные их комбинации.
Необходимо для каждого элемента ASU(например M1) найти элемент в rzs(M1,M1M2,..), в котором содержится(например M1)
Если нашлось совпадение(вхождение), то удалить из обоих массивов элементы!

Я пытался это сделать с помощью Массива строк и Списка на массиве строк, но тщетно. Не могу( не знаю как ) реализовать поиск подстроки в объекте(строка).
2 неудачные попытки 14661863

Usman сделал вхождение элемента M1(asu)->M1M2(rzs) 14661888 , а так же удаление из одного массива(rzs) 14661906 .
...
Рейтинг: 0 / 0
Помогите реализовать логику на Java.2 [Коллекции]
    #38354827
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на stackoverflow решили за 5 минут, а тут и за целый день дай Бог, если Usman заглянет.
Всем спасибо. Тему можно хоронить.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите реализовать логику на Java.2 [Коллекции]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]