判断包含关系的问题

blackrain06 2005-04-23 11:00:32
假设有这样一个数组:String [] s = {"01","02.01","01.01","02.01.01"};怎样判断数据的包含关系,就是说01包含01.01,02.01包含02.01.01,以此类推,最后把判断结果存到另外一个数组.例如刚才s的数组判断完之后的结果应该是s1={"01";"02.01"};
还请大侠指教,多谢!
...全文
190 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
for (int i = 0 ; list != null && i < list.size(); i++){
Taster taster = (Taster) list.get(i);
Category category = taster.getCategory();
String name = category.getName();
String id = category.getCategoryid();

ls.add(list[i]);
}
这样的话,怎样加入到ls中?
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
faen(发恩) :只要问题解决了,分不是问题
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
String [] s = {"01","02.01","01.01","02.01.01"};
如果s数组变成 List list呢?怎么处理?谢谢了!!!
faen 2005-04-23
  • 打赏
  • 举报
回复
不用谢,结铁的时候,多给点份,嘻嘻
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
faen(发恩):多谢了,单独运行没问题,我应用到项目中再测试一下。
faen 2005-04-23
  • 打赏
  • 举报
回复
jdk1.4用的。
import java.util.*;
public class A
{
public static void main(String [] args)
{
String [] s = {"01","02.01","01.01","02.01.01"};
LinkedList ls=new LinkedList();
for(int i=0;i<s.length;i++)
ls.add(s[i]);
for(int i=0;i<ls.size()-1;i++)
for(int j=i+1;j<ls.size();j++)
{
if(((String)ls.get(j)).indexOf((String)ls.get(i))==0)
{
ls.remove(j);
j=i;
continue;
}

}
for(int i=0;i<ls.size();i++)
{
System.out.println((String)ls.get(i));
}
}
}
faen 2005-04-23
  • 打赏
  • 举报
回复
对了,你的jdk的需要1.5的。
1.5以下的也可以,不过的修改一下。就是不能自动装箱,和自动解箱了。
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
LinkedList<String> ls = new LinkedList<String>();是什么意思?有错误啊
parol2910 2005-04-23
  • 打赏
  • 举报
回复
经典。。。
faen 2005-04-23
  • 打赏
  • 举报
回复
import java.util.*;
public class A
{
public static void main(String [] args)
{
String [] s = {"01","02.01","01.01","02.01.01"};
LinkedList<String>ls=new LinkedList<String>();
for(int i=0;i<s.length;i++)
ls.add(s[i]);
for(int i=0;i<ls.size()-1;i++)
for(int j=i+1;j<ls.size();j++)
{
if(ls.get(j).indexOf(ls.get(i))==0)
{
ls.remove(j);
j=i;
continue;
}

}
for(int i=0;i<ls.size();i++)
{
System.out.println(ls.get(i));
}
}
}
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
对,都是两位数字,中间以.分开
飞行的兔子 2005-04-23
  • 打赏
  • 举报
回复
你这个包含的具体定义是什么呢?
都是以.01分开?
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
好,谢谢你啊
faen 2005-04-23
  • 打赏
  • 举报
回复
呵呵,我也不知道了。
如果你的数组的内容确实如你所说,我也感觉很奇怪,单独运行没有问题。
我想你还是好好主意你自己的生成的数组是不是如你说的格式,看看有没有多余的空格字符等
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
这样的话也没有变化,真是奇怪,有解决办法吗?多谢了
faen 2005-04-23
  • 打赏
  • 举报
回复
List list = session.find(hsql);
String[] str = new String[list.size()];
for (int i = 0 ; list != null && i < list.size(); i++){
Taster taster = (Taster) list.get(i);
Category category = taster.getCategory();
String name = category.getName();
String id = category.getCategoryid();
str[i] = id;
namerole = name;

}


//换成这条语句,你看看结果。
str = {"01", "02.01", "01.01", "02.01.01"};
LinkedList ls = new LinkedList();
for (int i = 0; i < str.length; i++)
ls.add(str[i]);
for (int i = 0; i < ls.size() - 1; i++)
for (int j = i + 1; j < ls.size(); j++) {
if (((String) ls.get(j)).indexOf((String) ls.get(i)) == 0) {
ls.remove(j);
j = i;
continue;
}

}
for (int i = 0; i < ls.size(); i++) {
System.out.println((String) ls.get(i));
}
faen 2005-04-23
  • 打赏
  • 举报
回复
List list = session.find(hsql);
String[] str = new String[list.size()];
for (int i = 0 ; list != null && i < list.size(); i++){
Taster taster = (Taster) list.get(i);
Category category = taster.getCategory();
String name = category.getName();
String id = category.getCategoryid();
str[i] = id;
namerole = name;

}


//换成这条语句,你看看结果。
s = {"01", "02.01", "01.01", "02.01.01"};
LinkedList ls = new LinkedList();
for (int i = 0; i < str.length; i++)
ls.add(str[i]);
for (int i = 0; i < ls.size() - 1; i++)
for (int j = i + 1; j < ls.size(); j++) {
if (((String) ls.get(j)).indexOf((String) ls.get(i)) == 0) {
ls.remove(j);
j = i;
continue;
}

}
for (int i = 0; i < ls.size(); i++) {
System.out.println((String) ls.get(i));
}
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
for (int i = 0; i < ls.size(); i++) {
System.out.println((String) ls.get(i));
}

不是的,这个打印结果就是{"01", "02.01", "01.01", "02.01.01"};没有变化
faen 2005-04-23
  • 打赏
  • 举报
回复
for (int i = 0; i < ls.size(); i++) {
System.out.println((String) ls.get(i));
}
可能是这样的,注意结果是存在ls里的,str数组当然不会变化。
你返回的是str数组吗????
应该将ls重新构造一个新的数组,返回
blackrain06 2005-04-23
  • 打赏
  • 举报
回复
我加了,数组没问题。
就是str数组如果是{"01", "02.01", "01.01", "02.01.01"};经过算法之后,输出的还是{"01", "02.01", "01.01", "02.01.01"};
加载更多回复(6)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧