Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите реализовать логику на Java.2 [Коллекции] / 16 сообщений из 16, страница 1 из 1
04.08.2013, 20:25:34
    #38354491
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.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.
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
04.08.2013, 20:41:08
    #38354499
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
2ое, думаю можно реализовать с помощью унаследованного метода equals, ну а как быть, если нужно чтобы 3ий пункт выполнялся
да и вообще, если удалять одинаковые записи не стоит(потому что элементы передвинутся, да и ошибки полезут) может не ArrayList?
...
Рейтинг: 0 / 0
04.08.2013, 22:42:22
    #38354565
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
eldarkaa,

сформулируйте задачу в математическом виде (в терминах множеств), а уж потом подбирайте реализацию. Возможно, окажется, что вместо строк типа "M1M2" лучше использовать битовые шкалы. А то у меня сильное подозрение, что вы выбрали неадекватную реализацию, попали в тупик, и теперь зовете других разделить вашу участь.
...
Рейтинг: 0 / 0
04.08.2013, 22:53:45
    #38354570
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
rfq,
Просто я не совсем близко знаком со всеми классами в Java. (3-ий день только изучаю)
Реализация возможно не самая лучшая, так как повторяющиеся значения и каждый раз будут сравнивать - совсем не гуд.
Но интересует пока реализация на Массиве строк или на Списке на массиве строк.
-
... Пока никто не отвечал я вспомнил еще про одну особенность. Что просто так из списка не удалишь. Идет смещение элементов и появится ошибка о целостности данных.
...
Рейтинг: 0 / 0
04.08.2013, 23:39:42
    #38354601
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
Код: 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
04.08.2013, 23:43:31
    #38354603
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
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
05.08.2013, 00:26:40
    #38354617
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
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
05.08.2013, 00:38:03
    #38354619
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
eldarkaaОбязательно всю логику писать в main. Но он static и не позволяет мне использовать нестат. метод внутри него.
Чувак, ты в статике создай объект класса и из него вызови свой нестат. метод.
Код: java
1.
2.
3.
4.
public static void main(String[] args) {
        work bebebe = new work();
        bebebe.mywork();
}
...
Рейтинг: 0 / 0
05.08.2013, 01:37:08
    #38354626
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
по-прежнему не знаю как выцепить подстроку из объекта.
массив строк

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
05.08.2013, 02:49:56
    #38354640
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
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
05.08.2013, 03:03:08
    #38354642
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
Usman,
Спасибо, работает. Надо еще понять как так:)
Еще есть вопрос. Почему в IntelliJ Idea 12 (jdk1.7) ваш код не печатает ничего, а в compileonline.com все успешно работает?
...
Рейтинг: 0 / 0
05.08.2013, 03:11:58
    #38354644
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
проблема вашего решения, что не удалить потом элементы эти, и они будут повторять, то есть для одного элемента из ASU находить несколько из RZS, это не правильно
...
Рейтинг: 0 / 0
05.08.2013, 03:53:31
    #38354649
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
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
05.08.2013, 04:05:11
    #38354651
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
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
05.08.2013, 10:16:07
    #38354728
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
Помогите решить задачу.ЗадачаЕсть массив строк(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
05.08.2013, 11:32:28
    #38354827
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать логику на Java.2 [Коллекции]
на stackoverflow решили за 5 минут, а тут и за целый день дай Бог, если Usman заглянет.
Всем спасибо. Тему можно хоронить.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите реализовать логику на Java.2 [Коллекции] / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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