急求!!!!用java 写一个 字符串去重 的程序!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求!!!!用java 写一个 字符串去重 的程序!相关的知识,希望对你有一定的参考价值。

用java语言怎样将类似于这样的“人、药物、疾病、药物、疾病、人、药物、”的字符去重呀!我想要的结果是“人、药物、疾病、”,求大牛指点一下!

可以利用SET里元素不重复的功能实现, 将字符串按照、分割成数组, 然后挨个放入SET中, 最后遍历SET 将里面每个元素组合成一个字符串 。

String s[] = “人、药物、疾病、药物、疾病、人、药物、” 按照、分割。
Set set = new HashSet();
遍历数组s[]
将数组每个元素放入set
遍历结束
定义字符串result=""
遍历set
result = result + "、" + set的该次遍历的元素
遍历结束, 得到结果result
参考技术A public static void main(String[] args) throws Exception
List<String> list=new ArrayList<String>();
list.add("人");
list.add("药物");
list.add("疾病");
list.add("药物");
list.add("疾病");
list.add("人");
list.add("药物");
for (int i = 0; i < list.size()-1; i++)

for (int j = 1; j < list.size(); j++)

if(list.get(i).equals(list.get(j)))

list.remove(j);



System.out.println(list);
追问

非常感谢你的方法,但是你提供的方法好像还有一点小问题:
for (int j = 1; j < list.size(); j++) 中的j=1改为 j=i
例外我还感觉应该在
list.remove(j);后面还需要添加一句:j--; 因为我通过做实验发现remove()会使list的长度减少。
再次感谢您给我的提示!

参考技术B 可以使用set容器中内容不能重复的功能来去除重复的信息.
简单代码实现如下:
public static void main(String[] args) throws Exception
Set<String> list = new HashSet<String>();
list.add("人");
list.add("药物");
list.add("疾病");
list.add("药物");
list.add("疾病");
list.add("人");
list.add("药物");
System.out.println(list);


输出信息:[疾病, 药物, 人]
参考技术C private String str="人、药物、疾病、药物、疾病、人、药物、";
public List<String> toReate(String str)
List<String> list=new ArrayList<String>();
String[] strs=str.split("、");
list.add(strs[0]);
for(int i=1;i<strs.length;i++)
String currStr=strs[i];
Boolean exis=false;
for(int k=0;k<list.size();k++)
if(list.get(k).equals(currStr))
exis=true;
break;



if(!exis)
list.add(currStr);


return list;
参考技术D 用set,用list还要自己写方法判断是不是重复的,肯定用set然后直接用set.add(“人”)直接添加,重复的直接就过滤掉了,都不用for循环..

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!

函数原型为: int strcompare(char *p1,char *p2)
设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1不等于s2时,返回它们二者的第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二字母不同,“O”与“A”之差为79-65=14);即如果s1>s2,则输出正值;如果s1<s2,则输出负值。
注意:有程序前缀
例如:
输入:
CHINA↙
Chen↙
输出:
-32
前缀代码:
#include <stdio.h>
int strcompare (char *p1,char *p2);

#include <stdio.h>
int strcmp(char *s1, char *s2)

while((*s1++ == *s2++)&& *s1);
return (*s1 - *s2);

void main()

char a[10], b[10];
gets(a);
gets(b);
printf("%d\n", strcmp(a, b));
参考技术A #include <stdio.h>
#define N 4
int strcomp(char *s1,char *s2)
for(;*s1==*s2&&*s1&&*s2;s1++,s2++); /* 找不同的字符 */
return(*s1-*s2); /* 返回字符差值*/

void main()
char str[N][50];
int i,j;
for(i=0;i<N;i++)
printf("String #%d:",i+1);
gets(str[i]);

for(j=0,i=1;i<N;i++)
if(strcomp(str[j],str[i])>0) j=i;
printf("Min string is:%s\n",str[j]);
参考技术B #include <stdio.h>
int strcompare (char *p1,char *p2);
int main()
    char p1[100],p2[100];
    int ans;
    gets(p1);
    gets(p2);
    ans = strcompare(p1,p2);
    printf("%d\\n",ans);
    return 0;

int strcompare (char *p1,char *p2)
    int i;
    for(i=0;p1[i]!='\\0' && p2[i]!='\\0';i++)
        if(p1[i]==p2[i]) continue;
        else return (p1[i]-p2[i]);
    
    if(p1[i]=='\\0' && p2[i]=='\\0') return 0;
    else if(p1[i]=='\\0') return -p2[i];
    else return p1[i];

参考技术C 3137333的程序有问题,应是:
int strcmp(char *s1, char *s2)

while((*s1==*s2)&&*s1) s1++;s2++;
return(*s1-*s2);

原来程序返回的是不相同字符的下一字符的差值!
参考技术D #include <stdio.h>
int strcompare(char *p1, char *p2);
int main()

char s1[100];
char s2[100];
gets(s1);
gets(s2);
printf("%d\\n", strcompare(s1, s2));
system("pause");

int strcompare(char *p1, char *p2)

for (; *p1 == *p2&&*p1; p1++, p2++);
return *p1 - *p2;

本回答被提问者采纳

以上是关于急求!!!!用java 写一个 字符串去重 的程序!的主要内容,如果未能解决你的问题,请参考以下文章

急求,用JAVA编写,键盘输入生日,用LocalDate写

用Java编写银行账户存取款业务,急求!!

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!

急求。。。C语言实现,计算字符串中子串出现的次数,就是先输入一个字符串,再输入一个上面字符串中存在

谁可以给我一个以C语言或者java写的两个客户端之间的聊天,服务器中转的聊天程序,急求啊~~~

急求java面试题