首页编程java编程java中什么集合键可以重复 java判断集合是否重复用什么符号关键字

java中什么集合键可以重复 java判断集合是否重复用什么符号关键字

编程之家2023-10-14110次浏览

大家好,java中什么集合键可以重复相信很多的网友都不是很明白,包括java判断集合是否重复用什么符号关键字也是一样,不过没有关系,接下来就来为大家分享关于java中什么集合键可以重复和java判断集合是否重复用什么符号关键字的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

java中什么集合键可以重复 java判断集合是否重复用什么符号关键字

c#中如何实现可以重复的键值

软糖二话不说直接上代码

按Key排序的 MutiSortedList<TKey, TValue>

///<summary>

///按Key排序再按Value排序的SortedList,Key和Value都可以重复,但禁止键值对完全相同。

java中什么集合键可以重复 java判断集合是否重复用什么符号关键字

///</summary>

public class MutiSortedList<TKey, TValue>: SortedList<TKey, TValue> where TKey: IComparable

{

java中什么集合键可以重复 java判断集合是否重复用什么符号关键字

///<summary>

///相等的键也返回不等

///</summary>

private class MyComparer<TCKey>: IComparer<TCKey> where TCKey: IComparable

{

public int Compare(TCKey x, TCKey y)

{

int i= x.CompareTo(y);

//(-1) x在y之前//(1) x在y之后

if(i== 0){ return(-1);} else{ return i;}

}

}

public MutiSortedList(): base(new MyComparer<TKey>()){}

public new void Add(TKey key, TValue value)

{

foreach(KeyValuePair<TKey, TValue> item in this)

{//检查是否具备这个key,并且检查value是否重复

if(item.Key.Equals(key)&& item.Value.Equals(value)){ return;}

}

base.Add(key, value);

}

public new void Remove(TKey key)

{

for(int i= 0; i< this.Count; i++)

{

if(Keys[i].Equals(key)){ base.RemoveAt(i);}

}

}

public void Remove(TValue value)

{

for(int i= 0; i< this.Count; i++)

{

if(Values[i].Equals(value)){ base.RemoveAt(i);}

}

}

public void Remove(TKey key, TValue value)

{

for(int i= 0; i< this.Count; i++)

{

if(Keys[i].Equals(key)& Values[i].Equals(value)){ base.RemoveAt(i);}

}

}

public new TValue this[TKey key]

{

get{ return base[key];}

}

///<summary>

///返回键对应的值列表

///</summary>

///<param name="key"></param>

///<param name="升序"></param>

///<returns>返回IList(Of值)</returns>

public IList<TValue> this[TKey key, bool升序]

{

get{

var结果= new List<TValue>();

for(int i= 0; i< Count; i++)

{

if(Keys[i].Equals(key))

{结果.Add(Values[i]);}

}

return结果;

}

}

}

不排序的,实际内部装的是Tuple,不使用Key和Value而用Item1和Item2

///<summary>

///按默认顺序排序的Dictionary,Key和Value都可以重复,但禁止键值对完全相同。

///<para>继承于<see cref="List{Tuple}"/><see cref="Tuple{TKey, TValue}"/></para>

///</summary>

public class TupleList<TKey, TValue>: List<Tuple<TKey, TValue>>{

public void Add(TKey key, TValue value){

foreach(var item in this){//检查是否具备这个key,并且检查value是否重复

if(item.Item1.Equals(key)&& item.Item2.Equals(value)){ return;}

}

base.Add(new Tuple<TKey, TValue>(key, value));

}

public void Remove(TKey key){

foreach(var item in this){

if(item.Item1.Equals(key)){ Remove(item);}

}

}

///<summary>

///返回键对应的多个值组成的列表<see cref="IList{TValue}"/>

///</summary>

///<param name="key"></param>

///<param name="升序"></param>

///<returns>返回IList(Of值)</returns>

public IList<TValue> this[TKey key, bool升序= false]{

get{

var结果= new List<TValue>();

foreach(var item in this){//检查是否具备这个key,并且检查value是否重复

if(item.Item1.Equals(key)){结果.Add(item.Item2);}

}

return结果;

}

}

}

java 用什么集合类型可以同时保存两个对象的

importjava.util.HashMap;

importjava.util.Map;

/*

*作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?

*如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称。

*但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?

*针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合Map。

*通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。这个时候存储我们上面的需求,就可以这样做

*学号1姓名1

*学号2姓名2

*学号3姓名3

*学号2(不行)姓名4

*学号4姓名4

*Map集合的特点:

*将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

*

*Map集合和Collection集合的区别?

* Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对

* Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

*

*注意:

* Map集合的数据结构值针对键有效,跟值无关

* HashMap,TreeMap等会讲。

* Collection集合的数据结构是针对元素有效

*

*Map集合的功能概述:

*1:添加功能

* Vput(Kkey,Vvalue):添加元素。这个其实还有另一个功能?先不告诉你,等会讲

*如果键是第一次存储,就直接存储元素,返回null

*如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

*2:删除功能

* voidclear():移除所有的键值对元素

* Vremove(Objectkey):根据键删除键值对元素,并把值返回

*3:判断功能

* booleancontainsKey(Objectkey):判断集合是否包含指定的键

* booleancontainsValue(Objectvalue):判断集合是否包含指定的值

* booleanisEmpty():判断集合是否为空

*4:获取功能

* Set<Map.Entry<K,V>>entrySet():???

* Vget(Objectkey):根据键获取值

* Set<K>keySet():获取集合中所有键的集合

* Collection<V>values():获取集合中所有值的集合

*5:长度功能

* intsize():返回集合中的键值对的对数

*/

publicclassMapDemo{

publicstaticvoidmain(String[]args){

//创建集合对象

Map<String,String>map=newHashMap<String,String>();

//添加元素

//Vput(Kkey,Vvalue):添加元素。这个其实还有另一个功能?先不告诉你,等会讲

//System.out.println("put:"+map.put("文章","马伊俐"));

//System.out.println("put:"+map.put("文章","姚笛"));

map.put("邓超","孙俪");

map.put("黄晓明","杨颖");

map.put("周杰伦","蔡依林");

map.put("刘恺威","杨幂");

//voidclear():移除所有的键值对元素

//map.clear();

//Vremove(Objectkey):根据键删除键值对元素,并把值返回

//System.out.println("remove:"+map.remove("黄晓明"));

//System.out.println("remove:"+map.remove("黄晓波"));

//booleancontainsKey(Objectkey):判断集合是否包含指定的键

//System.out.println("containsKey:"+map.containsKey("黄晓明"));

//System.out.println("containsKey:"+map.containsKey("黄晓波"));

//booleanisEmpty():判断集合是否为空

//System.out.println("isEmpty:"+map.isEmpty());

//intsize():返回集合中的键值对的对数

System.out.println("size:"+map.size());

//输出集合名称

System.out.println("map:"+map);

}

}

java判断集合是否重复用什么符号关键字

方法1:

利用Set集合来实现

将字符串中的每个字符依次存入Set集合中,Set集合会自动剔除重复元素。

判断Set集合的元素个数是否等于字符串的长度,若相等,则字符串中没有重复的字符。否则,字符串中存在重复的字符。

Code:

public static boolean isunique(String s){

Set set= new HashSet();

char[] chars= s.toCharArray();

for(char c:chars){

set.add(c);

}

return(set.size()==s.length());

}

方法2:

将字符串转化为字符数组。

对于每个字符,从字符串的开头检索,得到索引号index1

从字符串的末尾开始索引,得到索引号index2

判断index1是否等于index2

若相等,则字符串中不含重复字符。否则,字符串中含有重复字符。

Code:

public static boolean isunique(String s){

int index1,index2;

char[] chars= s.toCharArray();

for(char c:chars){

index1= s.indexOf(c);

index2= s.lastIndexOf(c);

if(index1!= index2) return false;

}

return true;

}

java有哪些集合

亲,Java的集合框架不是在百度知道里面说得清楚的。Java集合本身就很复杂,而且有一开始有些设计错误,后面在持续的修改。你想了解清除,可以看下Thinking in Java和疯狂Java讲义(为什么要两本呢?前一本讲得很系统,但是没有Java7的内容,所以要看后一本),看的时候配合查下官方文档。

如果你想快速了解使用的话,那么你只需要知道:在大多数情况下用ArrayList代替数组,用HaspMap存储Key-Value就行了。

OK,关于java中什么集合键可以重复和java判断集合是否重复用什么符号关键字的内容到此结束了,希望对大家有所帮助。

灵化之术(灵化之术有什么用)java什么教程好(java教程哪个好)