日期:2014-05-20  浏览次数:20830 次

两行数据找相同元素
我有一个比如叫做input.txt 文本 格式如下
12 Follower[13,14,16,]
12 Following[14,29,39,]
13 Following[12,]
14 Follower[12,48,98,]
14 Following [12,48,90,]

这个文本是按照第一列的数字(之后成为用户) 升序排列的
我想找的是 比如用户12 他既有follower 也有following 我想找方括号里面相同的元素 并输出存为output.txt 例如:

12 [14]
14 [12,48]

应该怎么做??
请给我具体的code 谢谢 80分哟~~~


------解决方案--------------------
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;

public class FindSameNumber
{
void StringInArray(ArrayList<Integer> list, String str)
{
int start = 1;
int end = 0;
int i;

while (!str.substring(start).equals("]"))
{
for (i = start; i < str.length(); i++)
{
if (str.charAt(i) == ',')
{
end = i;
break;
}
}

int number = Integer.parseInt(str.substring(start, end));
list.add(number);

start = end + 1;
}
}

void find() throws Exception
{
BufferedReader br = new BufferedReader(new FileReader(new File(
"input.txt")));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
"output.txt")));

String t1 = br.readLine();
String t2;

ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();

while (t1 != null)
{
t2 = br.readLine();

int user1Index = t1.indexOf(" F");
int user2Index = t2.indexOf(" F");

int number1 = Integer.parseInt(t1.substring(0, user1Index));
int number2 = Integer.parseInt(t2.substring(0, user2Index));

if (number1 == number2)
{
bw.write(number1 + " [");

int user1ArrayIndex = t1.indexOf("[");
int user2ArrayIndex = t2.indexOf("[");

StringInArray(list1, t1.substring(user1ArrayIndex));
StringInArray(list2, t2.substring(user2ArrayIndex));

int i = 0;
int j = 0;

while(i != list1.size() -1 && j != list2.size())
{
int ele1 = list1.get(i);
int ele2 = list2.get(j);

if(ele1 == ele2)
{
bw.write(ele1+",");
System.out.println(number1+":"+ele1);

i++;
j++;
}else
{
if(ele1 > ele2)
{
j++;
}else
{
i++;
}
}

}

bw.write("]\r\n");

t1 = br.readLine();
} else
{
t1 = t2;
}

}

br.close();
bw.close();
}

public static void main(String[] args) throws Exception
{
FindSameNumber fsm = new FindSameNumber();
fsm.find();
}
}

条件:
1.如果相同用户后不是Following就是Follower
2.用户的数组已经排好序
------解决方案--------------------
看看这个
http://topic.csdn.net/u/20120624/21/9357067a-552c-4200-a16c-f0924f4b2da6.html