兩種向Set中添加元素的方法,第一種是使用add()方法,每次添加一個(gè)元素到set中,當(dāng)集合中不存在相同元素時(shí)將添加到集合中,并返回true,當(dāng)集合中存在元素時(shí),返回false。代碼如下:
創(chuàng)新互聯(lián)專注于莒縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城開發(fā)。莒縣網(wǎng)站建設(shè)公司,為莒縣等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
SetString sets = new HashSet();
sets.add("String");
System.out.println(sets.add("Tree"));
System.out.println(sets.add("String"));
ListString lists = new LinkedList();
lists.add("test");
lists.add("test");
lists.add("one");
System.out.println(sets.addAll(lists));
還有一個(gè)是向集合中批量添加元素的方法addAll(),這個(gè)方法的入?yún)⑹荂olletion。上述代碼執(zhí)行結(jié)果如下:
擴(kuò)展知識(shí)
Set集合可以知道某物是否已近存在于集合中,不會(huì)存儲(chǔ)重復(fù)的元素,注重獨(dú)一無二的性質(zhì),用于存儲(chǔ)無序(存入和取出的順序不一定相同)元素,值不能重復(fù)??梢院芎玫刈鳛榕胖貢r(shí)使用的數(shù)據(jù)結(jié)構(gòu),但要注意集合內(nèi)部數(shù)據(jù)一般情況沒有順序。常用的set有HashSet和TreeSet。
TreeSet是JAVA中集合的一種,TreeSet 是一個(gè)有序的集合,它的作用是提供有序的Set集合。它繼承于AbstractSet抽象類,實(shí)現(xiàn)了NavigableSetE,Cloneable,java.io.Serializable接口。一種基于TreeMap的NavigableSet實(shí)現(xiàn),支持2種排序方式:自然排序?或者?根據(jù)創(chuàng)建TreeSet 時(shí)提供的 Comparator 進(jìn)行排序。
你好,java中專門的帶有順序的set類是TreeSet,比如對(duì)String類的TreeSet使用方法是
TreeSetString set=new TreeSetString(new Comparator(){
@Override
public int compare(Object arg0, Object arg1) {
return 0;
}
});
Set和List都是接口,都實(shí)現(xiàn)了Collection接口和Iterable接口。
兩者的轉(zhuǎn)換不常進(jìn)行,通過集合的 addAll() 方法可以實(shí)現(xiàn)
/**
*?List和Set的轉(zhuǎn)化(Set轉(zhuǎn)化成List)
*/
public?static?T?ListT?SetToList(SetT?set)?{
ListT?list?=?new?ArrayList();
list.addAll(set);//?轉(zhuǎn)換核心
return?list;
}
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class MySet {
public static void main(String[] args) {
Set set1 = new TreeSet();
set1.add("aa");
set1.add("bb");
set1.add("CC");
Set set2 = new TreeSet();
set2.add("aa");
set2.add("eeff");
Set unionSet = MySet.union(set1, set2);
Set intersectionSet = MySet.intersection(set1, set2);
printSet(unionSet);
System.out.println("-----------------------------");
printSet(intersectionSet);
}
private static void printSet(Set set) {
Iterator ite = set.iterator();
while(ite.hasNext()){
System.out.println(ite.next().toString());
}
}
public static Set union(Set set1, Set set2){
Set set = new TreeSet();
set.addAll(set1);
set.addAll(set2);
return set;
}
public static Set intersection(Set set1, Set set2){
Set set = new TreeSet();
if(set1.size() set2.size()){
set.addAll(set2);
}else{
set.addAll(set1);
}
Iterator ite = set.iterator();
while(ite.hasNext()){
Object obj = ite.next();
if(!(set1.contains(obj) set2.contains(obj))){
set.remove(obj);
}
}
return set;
}
}
--------------------------
CC
aa
bb
eeff
-----------------------------
aa
1、面向接口(DAO)編程,接口的實(shí)現(xiàn)。
構(gòu)建User.java實(shí)體類,構(gòu)建UserImpl.java類,實(shí)現(xiàn)UserDao接口,構(gòu)建MapDal.java,模擬數(shù)據(jù)庫,Main.java模擬UI,UI只調(diào)用UserImpl,UserImpl調(diào)用MapDal。
main.java
package?baidu.zhidao;
import?java.util.*;
/**
*?Main?主方法
*?@author?bufei
*
*/
public?class?Main?{
public?static?void?main(String[]?args)?{
int?userNum?=?9;
//?定義UserList
ListUser?list?=?new?ArrayListUser();
for?(int?i?=?0;?i??userNum;?i++)?{
User?user?=?new?User();
user.setPassWord("passWord"?+?i);
user.setUserName("userName"?+?i);
list.add(user);
}
//?實(shí)例化UserImpl
UserImpl?userImpl?=?new?UserImpl(list);
//?用戶?張三?是否存在
String?userName?=?"張三";
String?passWord?=?"passWord";
User?user?=?new?User();
user.setUserName(userName);
user.setPassWord(passWord);
System.out.println("-?-?-?baiduDemo?-?-?-");
//?1、isExist(user)
System.out.println("查找用戶?"?+?userName?+?"...");
if?(userImpl.isExist(user))?{
System.out.println(userName?+?"?存在!");
}?else?{
System.out.println(userName?+?"?不存在!");
}
//?2、addUser
System.out.println("添加用戶?"?+?userName?+?",psw=?"?+?passWord?+?"?...");
userImpl.addUser(user);
//?3、changePassword(userName)
System.out.println("修改密碼...");
passWord?=?"zhangsanpasword";
if?(userImpl.changePassword(userName,?passWord))?{
System.out.println("修改成功!");
}?else?{
System.out.println("用戶不存在!");
}
//??4?selectAll()
list?=?userImpl.selectAll();
System.out.println("獲取全部User:");
for?(User?userItem?:?list)?{
System.out.println(userItem.getUserName()?+?","?+?userItem.getPassWord());
}
}
}
UserImpl.java
package?baidu.zhidao;
import?java.util.*;
/**
*?UserDao接口實(shí)現(xiàn)
*?@author?bufei
*
*/
public?class?UserImpl?implements?UserDao?{
private?MapDal?mapDal;
/**
*?構(gòu)造器,初始化Map數(shù)據(jù)庫
*/
public?UserImpl(ListUser?list)?{
mapDal?=?new?MapDal(list);
}
/**
*?1.判斷某個(gè)user是否存在
*?@param?user?用戶對(duì)象
*?@return?返回true/false用戶是否存在
*/
public?boolean?isExist(User?user)?{
boolean?rs?=?false;
rs?=?mapDal.isExist(user);
return?rs;
}
/**
*?2.添加User
*?題目所給void?返回類型不合理
*?@param?user
*
*?*/
public?void?addUser(User?user)?{
if?(mapDal.addUser(user))?{
System.out.println("添加完成!");
}?else?{
System.out.println("添加失??!");
}
}
/**
*?3.根據(jù)username修改password
*?@param?username
*?@param?password
*?@return?成功與否
*?*/
public?boolean?changePassword(String?userName,?String?password)?{
boolean?rs?=?false;
User?user?=?new?User();
user.setUserName(userName);
user.setPassWord(password);
rs?=?mapDal.changePassword(user);
return?rs;
}
/**
*?根據(jù)用戶對(duì)象修改密碼
*?@param?user
*?@return
*/
public?boolean?changePassword(User?user)?{
return?mapDal.changePassword(user);
}
/**
*?4.得到所有的User,用List封裝
*?@return?從數(shù)據(jù)庫查詢到所有的User
*?*/
public?ListUser?selectAll()?{
return?mapDal.selectAll();
}
}
MapDal.java
package?baidu.zhidao;
import?java.util.*;
/**
*?MapDml?用map模擬數(shù)據(jù)庫,初始化生成一些User
*?單例模式,避免數(shù)據(jù)不同步
*?@author?bufei
*
*/
public?class?MapDal?{
/**?list中存map,實(shí)在繞得很,直接存User也是可以?*/
public?static?ListMapString,?String?userMapList?=?new?ArrayListMapString,?String();
/**
*?初始化,有參構(gòu)造器
*?構(gòu)造Map??map,存儲(chǔ)全部的userName,passWord,模擬數(shù)據(jù)庫
*
*/
public?MapDal(ListUser?list)?{
for?(User?user?:?list)?{
Map?userMap?=?new?HashMapString,?String();
userMap.put(user.getUserName(),?user.getPassWord());
userMapList.add(userMap);
}
}
/**
*?無參構(gòu)造器
*?*/
public?MapDal()?{
}
/**
*
*?@param?user
*?@return
*/
public?boolean?isExist(User?user)?{
boolean?rs?=?false;
//遍歷userMapList?查找用戶是否存在
for?(MapString,?String?map?:?userMapList)?{
//?找到該map
if?(map.get(user.getUserName())?!=?null)?{
rs?=?true;
}
}
return?rs;
}
/**
*?addUser,userName已存在則無法加入
*?@param?user
*?@return?boolean
*/
public?boolean?addUser(User?user)?{
boolean?rs?=?false;
//遍歷userMapList?查找用戶是否存在
for?(MapString,?String?map?:?userMapList)?{
//?找到該map,已經(jīng)存在,無法添加
if?(map.get(user.getUserName())?!=?null)?{
return?rs;
}
}
if?(!rs)?{
MapString,?String?userMap?=?new?HashMapString,?String(8);
userMap.put(user.getUserName(),?user.getPassWord());
userMapList.add(userMap);
rs?=?true;
}
return?rs;
}
/**
*?deleteUser
*?@return
*/
public?boolean?deleteUser()?{
boolean?rs?=?false;
return?rs;
}
/**
*?changePassword
*?@param?user
*?@return
*/
public?boolean?changePassword(User?user)?{
boolean?rs?=?false;
//?定義遍歷索引
int?i?=?0;
//遍歷userMapList?查找用戶是否存在
for?(MapString,?String?map?:?userMapList)?{
//?找到該map,remove,再次存入新的
if?(map.get(user.getUserName())!=null)?{
userMapList.remove(i);
//hashmap?初試默認(rèn)值?0.75-16
Map?userMap?=?new?HashMapString,?String(8);
userMap.put(user.getUserName(),?user.getPassWord());
userMapList.add(userMap);
rs?=?true;
}
i++;
}
return?rs;
}
/**
*?selectAll()
*
*?@return?返回全體user
*/
public?ListUser?selectAll()?{
ListUser?list?=?new?ArrayListUser();
//遍歷map
for?(MapString,?String?userMap?:?userMapList)?{
User?user?=?new?User();
//map訪問需要使用Map.Entry
//entry?需要Set.iterator().next()
Set?entriSet?=?userMap.entrySet();
IteratorMap.EntryString,?String?iterator?=?entriSet.iterator();
if?(iterator.hasNext())?{
//?此時(shí)entry?是?Object
Map.EntryString,?String?entry?=?iterator.next();
user.setUserName(entry.getKey().toString());
user.setPassWord(entry.getValue().toString());
list.add(user);
}
}
return?list;
}
}
2、運(yùn)行效果