الوقت/التاريخ الآن هو الثلاثاء مارس 19, 2024 2:37 am

3 نتيجة بحث عن append

[Java] الفرق بين StringBuffer و StringBuilder فى التعامل مع السلاسل النصية

اهلا بكم

على الرغم من التشابة الكبير بين الفئة #StringBuffer و الفئة #StringBuilder فى التعامل مع السلاسل النصية فى الجافا الا ان هناك فروق جوهرية بينهما على النحو التالى :

1_الفئة #StringBuffer متزامنة synchronized وهذا يعني أنه اذا كان هناك أكثر من مسار thread لا يمكن استدعاء أساليب الفئة StringBuffer في وقت واحد ....فى حين أن الفئة #StringBuilder غير متزامنة non-synchronized و بالتالى فانة يمكن إنشاء اكثر  من مسار thread لاستدعاء أساليب الفئة #StringBuilder في وقت واحد.

2_ الفئة #StringBuilder أكثر كفاءة فى التعامل مع السلاسل النصية من الفئة #StringBuffer.


أمثلة للتوضيح :

المثال التالى يوضح كفائة الفئتين فى التعامل مع السلاسل النصية حيث يقوم البرنامج بعمل حلقة تكرارية من 1 الى 10 الف دورة ومن ثم الحاق الكلمة Tpoint من خلال الاسلوب #append للفئة #StringBuffer و الفئة #StringBuilder ...ثم حساب الزمن المستغرق لكل فئة فى عملية الالحاق :

الكود:
public class ConcatTest{  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        StringBuffer sb = new StringBuffer("Java");  
        for (int i=0; i<10000; i++){  
            sb.append("Tpoint");  
        }  
        System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");  
        startTime = System.currentTimeMillis();  
        StringBuilder sb2 = new StringBuilder("Java");  
        for (int i=0; i<10000; i++){  
            sb2.append("Tpoint");  
        }  
        System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");  
    }  
}  


المخرجات :


Time taken by StringBuffer: 16ms
Time taken by StringBuilder: 0ms

يلاحظ من عملية الاخراج أن الفئة #StringBuilder أكثر فلم تستغرق اى وقت يذكر لعملية الالحاق اعلا فى حين أن الفئة #StringBuffer أستغرقت حوالى 16 ميلى ثانية لنفس العملية

تحياتى
من طرف زهراء
في الخميس يناير 24, 2019 9:01 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] الفرق بين StringBuffer و StringBuilder فى التعامل مع السلاسل النصية
المساهمات: 0
مشاهدة: 1594

[Java] التعامل مع الفئة Java StringBuilder

أهلا بكم 

_الفئة Java StringBuilder


هى إحدى الفئات التى توفرها لغة الجافا منذ الاصدار JDK 1.5 للتعامل مع مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها) فهى تشبة الى حد كبير الفئة  StringBuffer التى تحدثنا عليها فى مقال سابق وربما يكون الفرق الوحيد بينهما أن الفئة #StringBuilder متزامنة synchronized فى حين أن الفئة #StringBuffer غير متزامنة non-synchronized 

_مشيدات الفئة StringBuilder



اهم ثلاث مشيدات الفئة #StringBuilder التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuilder()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuilder(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuilder(int length)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuilder


تحتوي الفئة #StringBuilder على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة #append

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت #StringBuilder ....مثال : الحاق كلمة #java الى الكلمة #Hello على النحو التالى :

الكود:
class StringBuilderExample{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  #insert

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuilder#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة #Java بعد الحرف الاول للقيمة المخزنة فى #StringBuilder :

الكود:
class StringBuilderExample2{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello


3_الطريقة #replace

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن #StringBuilder بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة #StringBuilder ....المثال التالى يوضح الفكرة :

الكود:
class StringBuilderExample3{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية #Hello بالكلمة Java
HJavalo


4_الطريقة #delete

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن #StringBuilder و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBuilderExample4{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة #reverse

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى #StringBuilder ....مثال يوضح الفكرة

الكود:
class StringBuilderExample5{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder("Hello");  
sb.reverse();  
System.out.println(sb);//prints olleH  
}  
}  


المخرجات :
olleH

6_ الطريقة #capacity

تقوم تلك الطريقة بارجاع سعة المخزن #StringBuilder ...مثال توضيحيى :

الكود:
class StringBuilderExample6{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
}  
}  


المخرجات :

16
16
34

7_ الطريقة #ensureCapacity

تضمن طريقة #ensureCapacity أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBuilderExample7{  
public static void main(String args[]){  
StringBuilder sb=new StringBuilder();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 8:21 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuilder
المساهمات: 1
مشاهدة: 939

[Java] التعامل مع الفئة Java StringBuffer

أهلا بكم 

_الفئة Java StringBuffer


هى إحدى الفئات التى توفرها لغة الجافا للتعامل مع النصوص تشبة الى حد كبير الفئة #string إلا أن الفئة #StringBuffer تسخدم لإنشاء و التعامل مع سلسلة نصية قابلة للتغيير و التعديل بطريقة حيوية من (إلحاق، وإدراج، وحذف وتعديل وغيرها)

_مشيدات الفئة StringBuffer



اهم ثلاث مشيدات الفئة #StringBuffer التى يمكن استخدامها لانشاء و التعامل مع النصوص من خلال تلك الفئة على النحو التالى :


1_المشيد الاول :
الكود:
StringBuffer()


ينشىء مخزن مؤقت فارغ لسلسلة نصية مع السعة الأولية لـ 16حرف

2_ المشيد الثاني :
الكود:
StringBuffer(String str)


ينشىء مخزن مؤقت لسلسلة نصية بقيمة السلسة المحددة

3_المشيد الثالث :
الكود:
StringBuffer(int capacity)


ينشىء مخزن فارع مؤقت لسلسلة نصية مع السعة المحددة كطول


طرق و دوال الفئة StringBuffer


تحتوي الفئة #StringBuffer على العديد من الطرق و الدوال التى تساعدنا فى التعامل مع سلاسل البيانات من تعديل و تغير و الحاق و خلافة و ذلك على النحو التالى :

1_الطريقة #append

تقوم تلك الطريقة بإلحاق قيمة نصية الى المخزن الموقت #StringBuffer ....مثال : الحاق كلمة #java الى الكلمة #Hello على النحو التالى :

الكود:
class StringBufferExample{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.append("Java");  
System.out.println(sb);  
}  
}  


المخرجات :

Hello Java


2_ الطريقة  #insert

تقوم تلك الطريقة بادراج قيمة نصية للمخزن الموقت StringBuffe#r مع تحديد موضع الادراج ... المثال التالى يوضح كيفية ادراج الكلمة #Java بعد الحرف الاول للقيمة المخزنة فى #StringBuffer :
الكود:
class StringBufferExample2{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello ");  
sb.insert(1,"Java");  
System.out.println(sb);  
}  
}  


المخرجات :
HJavaello



3_الطريقة #replace

تقوم تلك الطريقة باستبدال القيمة النصية بالمخزن #StringBuffer بالقيمة الحالية او المعطاة اليها و يتم ذلك من ذلك تحديد موضع الاستبدال و عدد الاحرف التى سيتم اسبدالها من القيمة #StringBuffer ....المثال التالى يوضح الفكرة :

الكود:
class StringBufferExample3{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.replace(1,3,"Java");  
System.out.println(sb);HJavalo  
}  
}  


المخرجات :يمكنك ملاحظة أن عملية الاستبدال تمت بعد الحرف الاول وتم استبدال عدد 3 احرف من الكلمة الاصلية #Hello بالكلمة Java
HJavalo


4_الطريقة #delete

تقوم تلك الطريقة بحذف القيمة النصية بالمخزن #StringBuffer و يمكن تحديد موضع عملية الحذف وايضا عدد ما يتم حذفة ...المثال التالى يوضح الفكرة :
الكود:
class StringBufferExample4{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.delete(1,3);  
System.out.println(sb);  
}  
}  


المخرجات :
Ho

5_ الطريقة #reverse

تقوم تلك الطريقة بعكس السلسة النصية الحالية المخزنة فى #StringBuffer ....مثال يوضح الفكرة

الكود:
class StringBufferExample5{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer("Hello");  
sb.reverse();  
System.out.println(sb);  
}  
}  


المخرجات :
olleH

6_ الطريقة #capacity

تقوم تلك الطريقة بارجاع سعة المخزن #StringBuffer ...مثال توضيحيى :

الكود:
class StringBufferExample6{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());  
}  
}  


المخرجات :

16
16
34

7_ الطريقة #ensureCapacity

تضمن طريقة #ensureCapacity أن السعة المحددة هي الحد الأدنى للسعة الحالية. أما إذا كان أكبر من السعة الحالية ، فإنه يزيد السعة بواسطة (oldcapacity * 2) +2. على سبيل المثال ، إذا كانت سعتك الحالية 16 ، فسوف تكون (16 * 2) + 2 = 34.

الكود:
class StringBufferExample7{  
public static void main(String args[]){  
StringBuffer sb=new StringBuffer();  
System.out.println(sb.capacity());//default 16  
sb.append("Hello");  
System.out.println(sb.capacity());//now 16  
sb.append("java is my favourite language");  
System.out.println(sb.capacity());//now (16*2)+2=34 i.e (oldcapacity*2)+2  
sb.ensureCapacity(10);//now no change  
System.out.println(sb.capacity());//now 34  
sb.ensureCapacity(50);//now (34*2)+2  
System.out.println(sb.capacity());//now 70  
}  
}  


تحياتى لك
من طرف زهراء
في الخميس يناير 24, 2019 7:00 am
 
ابحث في: أساسيات اللغة Java Basics
موضوع: [Java] التعامل مع الفئة Java StringBuffer
المساهمات: 1
مشاهدة: 1320

الرجوع الى أعلى الصفحة

انتقل الى: