2013-01-13 4 views
0

필자는 1 개의 arrayList를 다른 arrayList로 변경 한 다음 arrayList 1의 항목 중 arrayList 2의 항목이 어디서 왔는지 패턴 확인기를 사용하지 않고 알 수 있어야합니다. 설명, 그렇게 간단한 예제와 함께 설명하도록하기 어려운 :하나의 arraylist를 다른 사람에게 연결

감안할 때 파일 입력

:

String strLine; 
String [] paragraph = strLine.split(""); 

을 여기에서 내가 추가 : 내가 사용하여 각 단락에 파일을 분할

Feline: 
Cat Lion 
Cheetah 

Canine: 
Dog 
Wolves Fox 

각 항목을 고급 for 루프 내에서 add 메소드를 사용하여 arrayList에 추가합니다.

이 첫 번째 ArrayList에 우리를 떠나야한다 :

[Feline: Cat Lion Cheetah, Canine: Dog Wolves Fox] 

을 거기에서 별도의 단어로 각 항목을 분리 할 필요, 정규식 \\의 +를 사용하여. 이것은 다른 고급 for 루프를 사용하면 쉽습니다.

이 두 번째 ArrayList에 우리를 떠나야한다 : 어쨌든 내가 두 번째 ArrayList의 단어 치타의 첫 번째 항목에서 유래 실현하는 프로그램을 거기에 도착하는 경우, 내가 알아야 할 것은

[Feline:, Cat, Lion, Cheetah, Canine:, Dog, Wolves, Fox] 

첫 번째 arrayList에서 두 번째 arrayList의 항목에 대해 첫 번째 arraylist를 검색하지 않아도됩니다. 포인트는 하나의 arrayList에있는 하나의 항목이 다른 arrayList에서 비롯된 것이어야합니다.

필자는 각 단락의 첫 단어가 무엇인지에 따라 각 단락마다 다른 작업이 수행되기 때문에 본질적으로이 작업을 수행해야합니다.

내 설명이 혼란스럽고 나쁜 용어에 대해 유감스럽게 생각한다면 문제를 설명하는 데 어려움이 있습니다.

가능한 경우 내 문제를 해결하는 방법을 알려주십시오.

감사

+4

왜 arraylist 대신지도를 사용하고 각 단 어의 일부 키를 매핑 할 수 없습니까? – Renjith

+0

지도와 hashMaps 등을 실제로 사용하지 않았기 때문에 그들이 어떻게 작동하는지 또는 무엇을하는지 익숙하지 않습니다. 지도가 어떻게 연관성을 만들 수 있을까요? arrayList에서 필요한 레이아웃/기능을 유지하면서 이야기하고 있습니까? – Digitalwolf

+0

또는 각 요소가 문자열 목록이 될 List를 사용할 수 있습니다. 첫 번째 요소는 첫 번째 단락의 모든 단어 목록이되고 두 번째 목록은 두 번째 단락 단어가됩니다. – Renjith

답변

2

난 당신이 공백 문자를 기반으로 분할을 수행 할 때 초기 배열 목록의 위치를 ​​유지하기 위해 제안 할 것입니다. 다음과 같이 객체를 정의한다고 가정 해보십시오.

public class MyWord 
{ 
private int pos; 

private String word; 
public MyWord(int pos,String word) 
{ 
this.pos = pos; 

this.word = word; 
} 
//getters and setters 
} 

그런 다음 분할하면 다음과 같은 작업을 수행 할 수 있습니다.

List<MyWord>secondList = new ArrayList<MyWord>(); 
for(int i=0;i<firstList.size();i++) 
{ 
String[]words = firstList.get(i).split("\\s"); 
for(String wordToAdd : words) 
{ 
    MyWord w = new MyWord(i,wordToAdd); 
    secondList.add(w); 
} 
} 

이제 두 번째 목록에는 첫 번째 목록에 포함 된 원래 색인과 단어가 포함 된 개체가 포함됩니다.

홉이 도움이됩니다.

+0

고마워, 나 에게이 일을 시도한 적이 있지만 작동해야합니다. 감사합니다 – Digitalwolf

+0

기꺼이 도와 드리겠습니다. 건배 :) – dinukadev

1

프로그램은 결코 '실현'되지 않습니다. 각각의 Java 콜렉션은 지정된 의미 체계를 가지고 있으며, 문서화 된 내용을 더 이상 나타내지 않습니다.

java.util.List은 객체의 정렬 된 목록을 저장합니다. 중복을 감지하지 못합니다. 그것은 다른 어떤 것과도 관계를 유지하지 않습니다. 'X가 들어 있습니까?'라는 질문을 할 수 있습니까? contains 방법으로 이것은 목록에있는 사물의 수에 비례하여 시간이 걸립니다.

String 개체를 목록에 저장하면 개체의 출처 개념이 없습니다. 그들은 단지 목록에 있습니다. 첫 번째 목록과 상관 관계가있는 항목을 두 번째 목록에 포함하려면 코드를 작성해야합니다. 모두 두 번째 목록을 저장해야하는 경우 첫 번째 목록과의 상관 관계이므로 List<Integer> 일 수 있으며 첫 번째 목록에서 해당 항목을 검색하여 색인을 얻습니다. 따라서 두 번째 목록의 각 항목을 처리 할 때 첫 번째 목록을 스캔하여 해당 목록이 어디에 있는지 확인해야합니다. 첫 번째 그룹에서 두 번째 그룹의 내용이 전혀 언급되지 않은 경우 어떤 일이 일어나기를 원하는지 분명하지 않습니다.

+0

나쁜 용어에 대해 유감스럽게도, 나는 프로그램이 단지 물건을 이해하고 물건을 연결하지 않는다는 것을 안다. 그냥 내 문제를 설명하는 방법을 몰랐다. 'List '이 내가 필요한 기능을 제공하는지 알 수 있습니다. 감사 – Digitalwolf

관련 문제