java 问题! String 去重
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 问题! String 去重相关的知识,希望对你有一定的参考价值。
String [] str = "java","java","oracle","script"打印结果[java,oracle,script]
最简单的:List<String> strList = new ArrayList<String>();
for(String str_ : str)
if(!strList.contains(str_))System.out.print(str_);
strList.add(str_);
以上代码未运行过,但是应该可以滴 参考技术A import java.util.Set;
import java.util.TreeSet;
public class Test
public static void main(String[] args)
String fdbs = "java,java,oracle,script";
String[] str = fdbs.split(",");
Set<String> set = new TreeSet<String>();
for (int i = 0; i < str.length; i++)
set.add(str[i]);
str = (String[]) set.toArray(new String[0]);
for (int i = 0; i < str.length; i++)
System.out.println(str[i]);
参考技术B import java.util.Set;
import java.util.TreeSet;
public class Admin
public static void main(String[] args)
String fdbs = "java","java","oracle","script";
String[] str = fdbs.split(",");
Set set = new TreeSet();
for (int i = 0; i < str.length; i++)
set.add(str[i]);
str = (String[]) set.toArray(new String[0]);
for (int i = 0; i < str.length; i++)
System.out.println(str[i]);
java set的去重问题
set类本身虽然可以对加入的数据进行去重,但只对于基本数据类型以及String类有效。
如果添加的是 数组或类 ,那么set在添加时是根据其内存地址是否相同而非内容。
重写equals方法需要在被添加类中进行,但
如果此类为java本身自带的类,不适合直接更改该类的内容。
另外对于数组,在java内是找不到其所属类的,也就意味着不可能去重写equals。
因此需要如何解决该问题?
例:
HashSet<String[ ]> hSet=new HashSet();
String[ ] str1="A","B";
String[ ] str2="A","B";
String[ ] str3="A","C";
hSet.add(str1);
hSet.add(str2);
hSet.add(str3);
如何使得在添加str2时能被忽略?
(这个是个例,需要通用的解决方法,即对于任何length的String[ ],在将其加入set时均能判断其内容是否已存在)
谢谢,如果能解决问题有加分
您好,提问者:
怎么可以用Set呢,Map是无重复的,使用Map方便,下面是例子,您看下。
**/
import java.util.HashMap;
import java.util.Map;
public class Demo
public static void main(String[] args)
String[] str1 = "A", "B" ;
String[] str2 = "A", "B" ;
String[] str3 = "A", "C" ;
Map<String, String[]> map = new HashMap<String, String[]>();
map = setMap("str1",str1,map);
map = setMap("str2",str2,map);
map = setMap("str3",str3,map);
public static Map<String, String[]> setMap(String name, String[] arr,Map<String, String[]> map)
if(map.size() == 0)
map.put(name, arr);
else
for(int i = 0; i < arr.length; i++)
for(String[] str : map.values())
if(str[i] != arr[i])
map.put(name, arr);
return map;
追问
那我如果要遍历整个Map(在不知道key和value规律的情况下)并且进行一些操作,放入一个新Map时,怎么同时遍历并获得每个key和对应的value?
追答Iterator it=map.entrySet().iterator();System.out.println( map.entrySet().size());
String key;
String value;
while(it.hasNext())
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey().toString();
value=entry.getValue().toString();
System.out.println(key+"===="+value);
参考技术A 对于java的自身类完全可以继承实现,然后覆写子类的方法。对于数组去重你可以写方法如判断长度,在判断内容,这都可以灵活实现。用Map觉得不符合其类定义的初衷了。
以上是关于java 问题! String 去重的主要内容,如果未能解决你的问题,请参考以下文章