数组中提取相同的字母,可以使用string的charat方法遍历字母,放到一个string中,找到之后删除掉这个字母,接着遍历下一个,示例如下:
package test1;
import java.util.Random;
public class ArrayTest {
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;istr+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在jdk api找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;jflag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;kif(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;iif(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;ja+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}
package test1;
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}
1. 初始化3个数组
2. 用System.arraycopy函数对其进行分析
3. 代码如下:
public class Yugi {
public static void main(String[] args){
String[] array = {"a","b","c","d","c","d","e"};
String[] other = new String[0];
String[] orig = new String[0];
String tmp = ",";
for(int i = 0; i < array.length; i++){
String a = array[i];
if(tmp.indexOf("," + a + ",") == -1){
tmp += a + ",";
String[] cloned = new String[orig.length + 1];
System.arraycopy(orig, 0, cloned, 0, orig.length);
cloned[cloned.length - 1] = a;
orig = cloned;
}else{
String[] cloned = new String[other.length + 1];
System.arraycopy(other, 0, cloned, 0, other.length);
cloned[cloned.length - 1] = a;
other = cloned;
}
}
for(String o : orig){
System.out.println(o);
}
for(String o : other){
System.out.println(o);
}
}
}
实现这种算法很简单.
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
利用set的唯一性很好解决
import java.util.Set;
import java.util.TreeSet;
public class BB {
public static void main(String[] args) {
String[] ary = {"a", "b", "c", "d", "c", "d","e"};
Set
for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}
String[] newAry = set.toArray(new String[0]);
for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}
}
}
---------------testing
a
b
c
d
e